home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 January / CHIP Turkiye Ocak 1998.iso / ARACLAR / LOTUSORG / ACROREAD / INSTALL.DSK / CALLBACK.LSS < prev    next >
Text File  |  1996-06-18  |  120KB  |  3,447 lines

  1. ''*********************************************************************
  2. ''
  3. ''   Module Name:   cominst\toolkit\callback.lss
  4. ''
  5. ''   Module Code:   COMINST
  6. ''
  7. ''   Author:        Dave Dupre
  8. ''
  9. ''   Creation Date: Wednesday January 5, 1994
  10. ''
  11. ''   Copyright Lotus Development Corporation, (c) 1994
  12. ''
  13. ''
  14. ''   Description:
  15. ''      
  16. ''
  17. ''   Additional authors: MZ
  18. ''
  19. ''   Change History:
  20. ''   $Log:   //CIT/VOL1/CFLOG/logfiles/cominst/toolkit/callback.l@s  $
  21. '' 
  22. ''    Rev 1.188   22 May 1996 15:24:36   jdonohue
  23. '' Replaced LEFTBP calls with LEFT
  24. '' 
  25. ''    Rev 1.187   16 May 1996 12:53:04   jdonohue
  26. '' Changed notepad.exe and readme.txt to write.exe and readme.wri, and changed
  27. '' corresponding string symbolic names to be consistent
  28. '' 
  29. ''    Rev 1.186   15 May 1996 13:34:32   glutz
  30. '' SrvNodeOptionsCB and NodeNodeOptionsCB were not veryfying the number
  31. '' of member check boxes accociated with each group box.
  32. '' 
  33. ''    Rev 1.185   07 May 1996 11:16:32   glutz
  34. '' Changed dirChanged% to static in nodenodeoptionscb.
  35. '' 
  36. ''    Rev 1.184   07 May 1996 10:18:36   glutz
  37. '' Fixed up logic for displaying personal dir and node options dialog 
  38. '' SPR#CDWT34NSKG
  39. '' 
  40. ''    Rev 1.183   12 Apr 1996 15:43:58   glutz
  41. '' Fixed problem in node options callbacks with member boxes being checked.
  42. '' 
  43. ''    Rev 1.182   09 Apr 1996 15:42:24   glutz
  44. '' Srvnodeoptions group boxes are not selected if no members are selected.
  45. '' 
  46. ''    Rev 1.181   09 Apr 1996 14:52:00   glutz
  47. '' in nodenodeoptions and srvnodeoptions toggling off all member boxes
  48. '' will turn off group box.
  49. '' 
  50. ''    Rev 1.180   28 Mar 1996 08:36:48   jdonohue
  51. '' Install fonts to  "win\fonts" on server
  52. '' 
  53. ''    Rev 1.178   27 Mar 1996 13:16:14   jdonohue
  54. '' Changed LOTUSFONTSDIR handling to mimic WIN/WINSYS fonts go to win directory
  55. '' on server
  56. '' 
  57. ''    Rev 1.177   14 Mar 1996 14:00:36   jdonohue
  58. '' Don't put up any node options if product not selected in NODENODEOPTIONSCB
  59. '' 
  60. ''    Rev 1.176   13 Mar 1996 13:42:26   jdonohue
  61. '' Changed GetListItem argument for "IDC_TREE" to 1 instead of Inst%, since there
  62. '' is only one list item ever
  63. '' 
  64. ''    Rev 1.175   11 Mar 1996 09:06:02   jdonohue
  65. '' Added sticky settings to SRVNODEOPTIONSCB and NODENODEOPTIONSCB
  66. '' 
  67. ''    Rev 1.174   06 Mar 1996 12:29:22   jdonohue
  68. '' Ref SPR: LSCR32FVVK    
  69. '' Caused edit control for new program group to be highlighted by tabbing out of
  70. '' and back into control
  71. '' 
  72. ''    Rev 1.173   04 Mar 1996 08:31:50   jdonohue
  73. '' Remove 16 bit shared component support -- pass 1 : eliminate LOTUSAPP
  74. '' 
  75. ''    Rev 1.172   29 Feb 1996 15:37:14   glutz
  76. '' Callbacks that have combo/edit pairs now use ComboSelChanged and 
  77. '' GetPathFromComboEdit for path handling.
  78. '' 
  79. ''    Rev 1.171   23 Jan 1996 16:02:20   cmoy
  80. '' Merged FE changes
  81. '' 
  82. ''    Rev 1.170   17 Jan 1996 14:22:54   glutz
  83. '' modified NODENODEOPTIONSCB for LCBs.
  84. '' 
  85. ''    Rev 1.169   17 Jan 1996 11:47:12   jdonohue
  86. '' Backed out shared windows handling -- copy to normal server location as well
  87. '' 
  88. ''    Rev 1.168   15 Jan 1996 15:05:34   jdonohue
  89. '' Added function Lot_SharedWindowsDlg for Shared Windows Server installs
  90. '' 
  91. ''    Rev 1.167   12 Jan 1996 14:10:56   jdonohue
  92. '' Added special handling of SYM_LOTUSFONTSDIR$ and SYM_WINSYSDIR$) in dialogs
  93. '' 
  94. ''    Rev 1.166   12 Jan 1996 10:02:08   jdonohue
  95. '' Added flag for server install to shared windows location
  96. '' 
  97. ''    Rev 1.165   22 Dec 1995 10:13:04   jdonohue
  98. '' Removed all references to SYM_PARENTDIR$ -- is now SYM_BASEDIR$ for all
  99. '' 
  100. ''    Rev 1.164   Oct 24 1995 16:54:26   cmoy
  101. '' removed eof char
  102. '' 
  103. ''    Rev 1.163   22 Oct 1995 17:40:24   cmoy
  104. '' HISHI: Changed GetGroupName and PROGMANGROUPCB
  105. '' They call GetDBCSSymbolValue and GetDBCSListItem.
  106. '' GetGroupName doesn't call FDBCSCharLen.
  107. '' 
  108. ''    Rev 1.162   28 Sep 1995 10:26:40   amontalv
  109. '' Changed how the default folder is gotten to allow clients to change it when they
  110. '' change default program group name.  This broke when I changed the UI for folders.
  111. '' 
  112. ''    Rev 1.161   27 Sep 1995 16:40:52   amontalv
  113. '' Don't allow entries of illegal characters or blank fields for program folders.
  114. '' 
  115. ''    Rev 1.160   26 Sep 1995 13:01:48   amontalv
  116. '' Having problem redisplaying item that was previously clicked on after clicking on
  117. '' tab, so reset gPrevInst% when you click on tab.
  118. '' 
  119. ''    Rev 1.159   26 Sep 1995 12:40:00   amontalv
  120. '' Changed check for invalid characters.
  121. '' 
  122. ''    Rev 1.158   25 Sep 1995 17:45:42   amontalv
  123. '' Added code to check for valid folder item.  If invalid do not allow user to
  124. '' change selection or hit okay.
  125. '' 
  126. ''    Rev 1.157   Sep 25 1995 10:58:40   cmoy
  127. '' Fixed declaration errors
  128. '' 
  129. ''    Rev 1.156   22 Sep 1995 16:44:24   tveerapp
  130. '' Fixed spr# LSCR2VZVGB. GETLOTUSAPPDIRCB changes.
  131. '' 
  132. ''    Rev 1.155   22 Sep 1995 15:07:12   jdonohue
  133. '' Remove SYM_LOTUSUSERDIR$ processing
  134. '' 
  135. ''    Rev 1.154   22 Sep 1995 12:17:10   amontalv
  136. '' Check for focus before making change to Program Folder entry in tree from edit line.
  137. '' 
  138. ''    Rev 1.153   21 Sep 1995 15:40:10   amontalv
  139. '' Fixed notebook focus issues.  Had to call text1 and bitmap window directly.
  140. '' Also changed check for updating these.
  141. '' 
  142. ''    Rev 1.152   21 Sep 1995 09:33:56   jdonohue
  143. '' Disable browse buttons 2 and 3 for a language install
  144. '' 
  145. ''    Rev 1.151   20 Sep 1995 13:38:08   glutz
  146. '' CUSTOM2CB disables the path change button if the selected component
  147. '' belongs in the component dir.
  148. '' 
  149. ''    Rev 1.150   19 Sep 1995 15:30:00   amontalv
  150. '' After creating new folder, put focus in edit box.
  151. '' 
  152. ''    Rev 1.149   Sep 14 1995 18:30:06   cmoy
  153. '' fixed focus problem (Mak Inada)
  154. '' 
  155. ''    Rev 1.148   14 Sep 1995 12:26:20   cmoy
  156. '' fixed folder to foldername
  157. '' 
  158. ''    Rev 1.147   13 Sep 1995 16:31:34   amontalv
  159. '' Resourced New folder name.
  160. '' 
  161. ''    Rev 1.146   13 Sep 1995 16:26:36   amontalv
  162. '' Changed processing for program folder input dialog.
  163. '' 
  164. ''    Rev 1.145   07 Sep 1995 15:21:50   amontalv
  165. '' Added check to make sure folders names are not blank.
  166. '' 
  167. ''    Rev 1.144   05 Sep 1995 16:39:26   amontalv
  168. '' Added logic to get readnet.txt out of temp directory if it exists.
  169. '' 
  170. ''    Rev 1.143   31 Aug 1995 15:09:22   callanan
  171. '' Displaying tip in custom dlg using the setsymbol, to avoid losing bitmap.  Also added param to SetCustomInfo
  172. '' 
  173. ''    Rev 1.142   29 Aug 1995 08:29:10   jdonohue
  174. '' Changed symbol of USERDIR to LOTUSUSERDIR
  175. '' 
  176. ''    Rev 1.141   25 Aug 1995 14:22:56   amontalv
  177. '' Always calculate size when item gets clicked.
  178. '' 
  179. ''    Rev 1.140   24 Aug 1995 07:55:18   jdonohue
  180. '' Added SYM_USERDIR and set it
  181. '' 
  182. ''    Rev 1.139   23 Aug 1995 15:33:14   cmoy
  183. '' Moved MAX_NO_DRIVECOMBOS to toolkit.lss
  184. '' 
  185. ''    Rev 1.138   21 Aug 1995 14:24:48   tveerapp
  186. '' Made MAX_NO_DRIVECOMBOS a POUBLIC CONST.
  187. '' 
  188. ''    Rev 1.137   18 Aug 1995 17:27:44   tveerapp
  189. '' Fixed ResetWinWinSys to fix spr#JHAE2V7UNL.(This involved backing out
  190. '' Jdonahue's change on July29.)
  191. '' 
  192. ''    Rev 1.136   18 Aug 1995 16:38:24   glutz
  193. '' Took out a print statement.
  194. '' 
  195. ''    Rev 1.135   18 Aug 1995 16:35:54   glutz
  196. '' Had to make sure SetCustomInfo does not enable IDC_B1 if it is not
  197. '' visible.
  198. '' 
  199. ''    Rev 1.134   18 Aug 1995 11:13:34   callanan
  200. '' If item in custom dlg has no bmp set ID_BMP1 to null string, this will cause
  201. '' the bitmap symbol handler to clear out the old bmp.
  202. '' 
  203. ''    Rev 1.133   17 Aug 1995 14:16:54   callanan
  204. '' Changed the default way to handle bitmaps in dialogs
  205. '' 
  206. ''    Rev 1.132   14 Aug 1995 10:35:00   callanan
  207. '' Changed CUSTOM2CB to only display bitmap once when select
  208. '' 
  209. ''    Rev 1.131   11 Aug 1995 10:44:16   jdonohue
  210. '' Disable path change for server language install
  211. '' 
  212. ''    Rev 1.130   08 Aug 1995 17:03:06   tveerapp
  213. '' Added the browse functionality to GETLOTUSAPPDIRCB.
  214. '' 
  215. ''    Rev 1.129   08 Aug 1995 16:18:54   glutz
  216. '' Had to make sure in sizeofinstallcb the edit boxes only get validated
  217. '' if they exist.
  218. '' 
  219. ''    Rev 1.128   07 Aug 1995 08:28:24   mmeth
  220. '' Part 2 of fix for  SPR# JHOH2M4HZL:
  221. '' In WELCOMECB changed the length of the truncations from 30 to 80.
  222. '' 
  223. ''    Rev 1.127   05 Aug 1995 15:51:36   tveerapp
  224. '' Removed a space that was put in when the second path was being validated
  225. '' in SIZEOFINSTALLCB.
  226. '' 
  227. ''    Rev 1.126   05 Aug 1995 15:05:12   tveerapp
  228. '' Fixed an spr. Changed SIZEOFINSTALLCB. For server components dir use
  229. '' IDC_EDIT3 and IDC_COMBO3 to be consistent with the dialog templates.
  230. '' 
  231. ''    Rev 1.125   04 Aug 1995 16:39:30   glutz
  232. '' ParentDirCB and SizeofInstallCB always start out with dirchanged true.
  233. '' 
  234. ''    Rev 1.124   04 Aug 1995 11:15:06   jdonohue
  235. '' Don't allow user path changes for a language install
  236. '' 
  237. ''    Rev 1.123   01 Aug 1995 16:01:30   glutz
  238. '' Commented out 4 lines in SetCustomInfo so paths would show for tabs in
  239. '' server install.
  240. '' 
  241. ''    Rev 1.122   30 Jul 1995 07:51:20   glutz
  242. '' Added unc paths to Lot_SetSpaceDirTip.
  243. '' 
  244. ''    Rev 1.121   29 Jul 1995 17:44:12   jdonohue
  245. '' Set WINDIR and WINSYSDIR back to defaults if change from server to other
  246. '' 
  247. ''    Rev 1.120   29 Jul 1995 15:39:08   jdonohue
  248. '' PARENTDIRCB set dirChanged to true always for server since we fiddle with 
  249. '' drives list
  250. '' 
  251. ''    Rev 1.119   28 Jul 1995 16:47:56   pdonahue
  252. '' modified sizeofinstall in case of server to use IDC_Edit3 for lotusapp.
  253. '' 
  254. ''    Rev 1.118   27 Jul 1995 13:00:04   amontalv
  255. '' Changed the program manager group name to not do certain check if we 
  256. '' are in Win95.
  257. '' 
  258. ''    Rev 1.117   26 Jul 1995 10:36:52   pdonahue
  259. '' added error message for invalid folder name in case of win95 install.
  260. '' 
  261. ''    Rev 1.116   25 Jul 1995 12:43:10   jdonohue
  262. '' Grey out change path when on tab and item not selected
  263. '' 
  264. ''    Rev 1.115   20 Jul 1995 15:52:00   glutz
  265. '' SetCustomInfo now calls GetFreeSpaceForDrive every time a tab changes.
  266. '' 
  267. ''    Rev 1.114   20 Jul 1995 10:55:24   glutz
  268. '' GetFreeSpaceForDrive now returns K bytes so I made changes accordingly.
  269. '' 
  270. ''    Rev 1.113   17 Jul 1995 16:39:44   glutz
  271. '' Callback functions that have browse buttons now call ValidateBrowse if 
  272. '' IDC_BROWSE is the callback message.
  273. '' 
  274. ''    Rev 1.112   17 Jul 1995 13:17:30   amontalv
  275. '' Added check to see if current folder existed after the removal of a folder.
  276. '' If the folder exists then the Remove Folder button must be disabled, which it
  277. '' is, but the focus must be moved off this disabled button.  This part was
  278. '' missing and I added it here.
  279. '' 
  280. ''    Rev 1.111   14 Jul 1995 14:50:08   glutz
  281. '' SetCustomInfo had wrong return val type for call to LcbGetChapterCost.
  282. '' 
  283. ''    Rev 1.110   11 Jul 1995 12:04:56   glutz
  284. '' In CUSTOM1CB if it's a server install IDC_TEXT4 and IDC_B1 are hidden
  285. '' and IDC_TEXT8 is made visible.
  286. '' 
  287. ''    Rev 1.109   11 Jul 1995 08:53:08   glutz
  288. '' Disable IDC_B1 in CUSTOM1CB when the control is hidden.
  289. '' 
  290. ''    Rev 1.108   10 Jul 1995 15:02:16   glutz
  291. '' Set IDC_TEXT2 after browse in DISTSIZEINSTALLCB.
  292. '' 
  293. ''    Rev 1.107   05 Jul 1995 14:24:52   amontalv
  294. '' Added test to check if path already exists before accepting it on New Folder.
  295. '' 
  296. ''    Rev 1.106   30 Jun 1995 22:11:14   amontalv
  297. '' Added code to display Current Folder in Select Folder dialog.  And ended up adding
  298. '' a hack to allow me to display this when the dialog first comes up.
  299. '' 
  300. ''    Rev 1.105   30 Jun 1995 10:49:20   glutz
  301. '' Straightend out some problems with second path in sizeofinstallcb.
  302. '' 
  303. ''    Rev 1.104   29 Jun 1995 11:47:28   jdonohue
  304. '' Took out print statement
  305. '' 
  306. ''    Rev 1.103   28 Jun 1995 19:57:30   amontalv
  307. '' Changed the possible length of program group from 30 to 254 characters.
  308. '' 
  309. ''    Rev 1.102   28 Jun 1995 19:49:22   amontalv
  310. '' Added check to make sure you couldn't create a folder
  311. '' with just spaces.
  312. '' 
  313. ''    Rev 1.101   26 Jun 1995 19:06:28   amontalv
  314. '' Added check for length of path for folders.
  315. '' 
  316. ''    Rev 1.100   22 Jun 1995 16:44:12   glutz
  317. '' SIZEOFINSTALLCB has to differentiate between dirChanged and dischanged2.
  318. '' 
  319. ''    Rev 1.99   22 Jun 1995 15:30:08   tveerapp
  320. '' Changed WELCOMECB. case IDC_BACK (which is called when the esc. key is hit).
  321. '' Allow the user to quit from the Welcome dialog when the esc. key is hit.
  322. '' 
  323. ''    Rev 1.98   22 Jun 1995 10:21:56   pdonahue
  324. '' fixed merge error
  325. '' 
  326. ''    Rev 1.97   22 Jun 1995 09:31:06   pdonahue
  327. '' fixed bug in additional directory code,
  328. '' 
  329. ''    Rev 1.96   21 Jun 1995 14:28:46   glutz
  330. '' Simplified UNC and browse validations in callbacks
  331. '' 
  332. ''    Rev 1.95   19 Jun 1995 10:25:36   amontalv
  333. '' Put in code to add function to New Folder button and Remove Folder button.  Also
  334. '' fixed some of the selection problems in the tree list.
  335. '' 
  336. ''    Rev 1.94   16 Jun 1995 13:53:36   glutz
  337. '' Don't set drvIndex if SelectDriveCombo returns false
  338. '' 
  339. ''    Rev 1.93   16 Jun 1995 11:50:02   amontalv
  340. '' Made program groups list box get entries form Common Program Groups instead of
  341. '' Current user program groups.  Also made it so that it would be easier to display
  342. '' both if necessary.
  343. '' 
  344. ''    Rev 1.92   14 Jun 1995 22:12:10   amontalv
  345. '' Gave program folder a new look.
  346. '' 
  347. ''    Rev 1.91   14 Jun 1995 16:31:38   amontalv
  348. '' Fixed problem with NT Program Groups.  Look through the registry for
  349. '' program groups and display them for the user.  Most of the code
  350. '' is in C in lotusui.c.  Put calls to registry functions in regwrap.
  351. '' 
  352. ''    Rev 1.90   12 Jun 1995 17:40:36   cmoy
  353. '' fixed bug in changing paths
  354. '' 
  355. ''    Rev 1.89   12 Jun 1995 14:36:54   amontalv
  356. '' SPR KHAN2SSMDL - Resourced name of program group and added to end.
  357. '' 
  358. ''    Rev 1.88   09 Jun 1995 16:41:04   glutz
  359. '' Fixed bug with browse not chaging drive letter
  360. '' 
  361. ''    Rev 1.87   07 Jun 1995 20:59:26   amontalv
  362. '' Moved setting of Tree item around so that it would be set correctly
  363. '' 
  364. ''    Rev 1.86   07 Jun 1995 17:51:28   amontalv
  365. '' Don't set the selected folder again at OK of callback.
  366. '' 
  367. ''    Rev 1.85   07 Jun 1995 16:30:34   amontalv
  368. '' Changed the Win95 start folder so that it initializes
  369. '' earlier in the program.  This should make automation
  370. '' easier to implement for it.  There are still a couple of
  371. '' bugs that I need to work out, but I feel that I should
  372. '' check what I have now.
  373. '' 
  374. ''    Rev 1.84   02 Jun 1995 14:51:06   tveerapp
  375. '' Changed IDC_HELP to IDC_CITHELP.
  376. '' 
  377. ''    Rev 1.83   01 Jun 1995 11:10:44   amontalv
  378. '' Added API function CreateLink to create shortcuts.  Also added functions
  379. '' to save and get the link path to support the CreateLink.  I also changed
  380. '' the startup program folder code to use the default dialog proc and changed
  381. '' the default dialog proc to process directory trees.
  382. '' 
  383. ''    Rev 1.82   30 May 1995 15:03:40   amontalv
  384. '' Needed to lower case drive letter before looking for cost.
  385. '' 
  386. ''    Rev 1.81   25 May 1995 20:54:56   amontalv
  387. '' Added Win95 Program folder dialog and supporting code.  Still need to write code
  388. '' that creates the link files.
  389. '' 
  390. ''    Rev 1.80   22 May 1995 19:19:06   mzgripce
  391. '' delete print messages 
  392. '' 
  393. ''    Rev 1.79   21 May 1995 17:21:28   mzgripce
  394. '' display the DB_SIZEOFINSTALL# depending on components support and
  395. '' set the components symbol when SIZEOFINSTALLCB runs
  396. '' 
  397. ''    Rev 1.78   20 May 1995 20:11:12   glutz
  398. '' Added UNC and Browse to DISTSIZEOFINSTALLCB and NODENODEOPTIONSCB
  399. '' 
  400. ''    Rev 1.77   19 May 1995 18:20:26   glutz
  401. '' SIZEOFINSTALLCD now supports Browse and UNC in multiple
  402. '' Combo and Edit controls
  403. '' 
  404. ''    Rev 1.76   19 May 1995 14:58:48   glutz
  405. '' Added UNC and Browse to PARENTDIRCB
  406. '' 
  407. ''    Rev 1.75   18 May 1995 12:11:26   tveerapp
  408. '' Fixed a Numdirs% in sizeofinstallcb
  409. '' 
  410. ''    Rev 1.74   18 May 1995 12:05:24   tveerapp
  411. '' 1. Added call to SetTheComponentsDir to PARENTDIRCB.
  412. '' 2. Fixed SIZEOFINSTALLCB added check for extra directory.
  413. '' 
  414. ''    Rev 1.73   17 May 1995 15:11:44   mzgripce
  415. '' change >= with > in GetListLength in SIZEOFINSTALLCB 
  416. '' 
  417. ''    Rev 1.72   16 May 1995 17:09:32   glutz
  418. '' Changed USE to AUTOMATE
  419. '' 
  420. ''    Rev 1.71   16 May 1995 12:53:00   mzgripce
  421. '' added PARENTDIRCB subroutine
  422. '' 
  423. ''    Rev 1.70   16 May 1995 11:57:50   glutz
  424. '' Added UNC paths to CHANGEPRODUCTDIRCB, SIZEOFINSTALLCB and SetCustomInfo
  425. '' 
  426. ''    Rev 1.69   16 May 1995 09:47:54   pdonahue
  427. '' fixed typo
  428. '' 
  429. ''    Rev 1.68   16 May 1995 09:39:04   pdonahue
  430. '' added support for additional directories.
  431. '' 
  432. ''    Rev 1.67   03 May 1995 13:04:58   amontalv
  433. '' Upped the number of tabs from 8 to 9.
  434. '' 
  435. ''    Rev 1.66   02 May 1995 12:52:30   cmoy
  436. '' Merged c2 into cf build
  437. '' 
  438. ''    Rev 1.68   18 Apr 1995 17:31:04   mheerman
  439. '' SetFocus now returns a long.  I changed the variables which catch its
  440. '' return value to long to avoid an overflow.
  441. '' 
  442. ''    Rev 1.67   11 Apr 1995 14:23:02   amontalv
  443. '' Deleted debug print
  444. '' 
  445. ''    Rev 1.66   07 Apr 1995 19:35:44   amontalv
  446. '' LSS 32 bit port merge changes.
  447. '' 
  448. ''    Rev 1.65   06 Apr 1995 17:43:28   tveerapp
  449. '' Script port changes to CBs and Window calls.
  450. '' 
  451. ''    Rev 1.64   05 Apr 1995 20:21:18   amontalv
  452. '' Porting to 32 bit.
  453. '' 
  454. ''    Rev 1.63   02 Feb 1995 14:32:40   cmoy
  455. '' 
  456. '' Added Thangaraj's fix to Pipeline Problem
  457. '' 
  458. ''    Rev 1.62   29 Dec 1994 10:31:08   tveerapp
  459. '' 
  460. '' Commented out the Restart processing (IDC_CONTINUE) in INSTALLCOMPLETECB.
  461. '' 
  462. ''    Rev 1.61   09 Dec 1994 14:38:38   cmoy
  463. '' No change.
  464. '' 
  465. ''    Rev 1.60   06 Dec 1994 09:48:00   cmoy
  466. '' No change.
  467. '' 
  468. ''    Rev 1.59   18 Nov 1994 16:12:56   amontalv
  469. '' Japan DBCS: Added some resources to
  470. '' 
  471. ''    Rev 1.58   14 Oct 1994 11:40:12   tveerapp
  472. '' Fixed spr#1022903. The fix is in SRVNODEOPTIONSCB.
  473. '' 
  474. ''    Rev 1.57   11 Oct 1994 15:21:20   tveerapp
  475. '' 
  476. '' Added check to see if the prod. was not deselected to account
  477. '' for the min. and max size in SIZEOFINSTALLCB. This fixes spr#
  478. '' 32162.
  479. '' 
  480. ''    Rev 1.56   30 Sep 1994 14:48:20   cmoy
  481. '' Added InvChar("(") to the list of invalid chars.
  482. '' 
  483. ''    Rev 1.55   27 Sep 1994 14:07:44   cmoy
  484. '' 
  485. '' Changed find window inside INSTALLCOMPLETECB to use resourced
  486. '' string SID_INST_WINDOW_TITLE
  487. '' the WndTitle field in install.lst must match this field for reboot
  488. '' and restart functionality to work properly.
  489. '' 
  490. ''    Rev 1.54   27 Sep 1994 13:06:22   cmoy
  491. '' 
  492. '' moved rebooting and restarting constants to toolkit.lss
  493. '' 
  494. ''    Rev 1.53   26 Sep 1994 16:30:00   cmoy
  495. '' 
  496. '' Added Constant UM_RESTARTWINDOWS=1528
  497. '' 
  498. ''    Rev 1.52   16 Sep 1994 11:53:34   tveerapp
  499. '' Changed ProgmanCB. failed% =1. This change should have been made with
  500. '' the previous change.
  501. '' 
  502. ''    Rev 1.51   15 Sep 1994 16:17:14   tveerapp
  503. '' Changed ProgmangroupCb to accept characters that can be allowed to create
  504. '' program groups. InvChar is now a list.
  505. '' 
  506. ''    Rev 1.50   25 Aug 1994 16:46:22   mzgripce
  507. '' Gray out the Change Path button for win and winsys dir 
  508. '' 
  509. ''    Rev 1.49   02 Aug 1994 16:46:52   mzgripce
  510. '' put a check for Lot_IsTheNodeOptionsAvailtoNode() bfore turning 
  511. '' the options on in NODENODEOPTIONSCB
  512. '' 
  513. ''    Rev 1.48   24 Jun 1994 11:30:08   thangv
  514. '' Reverted back to using the old value (fixedin lcb.c by james) of
  515. '' Lot_LCBGetItem(..LCBITEM_SELECTED) in SRVNODEOPTIONSCB. The change was in
  516. '' line 1991 and 1999 in the check for the Selection% variable.
  517. '' 
  518. ''    Rev 1.47   21 Jun 1994 13:00:18   thangv
  519. '' Added code(lines 2010 and 2011) to get the groups chapter$. This was not
  520. '' having the right chapter number(had only the options for the group).This
  521. '' should fix the tip not showing up.(spr# 30277).
  522. '' 
  523. ''    Rev 1.46   21 Jun 1994 10:41:20   thangv
  524. '' Added code to CHANGEPRODUCTDIRCB (981-985) to restore the original
  525. '' value of the path if the product group rejects the path in their
  526. '' PathCahnge function.
  527. '' 
  528. ''    Rev 1.45   20 Jun 1994 14:49:36   thangv
  529. '' Changed the value of Selection% being checked in line 1970,1978 in
  530. '' SRVNODEOPTIONSCB to fix spr#31525. Lot_LCBGetItem returns the present state
  531. '' and not after the checkbox has been refreshed.
  532. '' 
  533. ''    Rev 1.44   16 Jun 1994 10:16:42   thangv
  534. '' 
  535. '' Added code to ungrey IDC_TEXT4 andIDC_TEXT5 in SIZEOFINSTALLCB,
  536. '' lines 1249 and 1250 to fix the bug for organizer(product with only full
  537. '' install and lotusapp support).
  538. '' 
  539. ''    Rev 1.43   08 Jun 1994 17:19:26   thangv
  540. '' The NODENODEOPTIONSCB was not calling the pathchange function for
  541. '' the products. Added the Lot_CallOneProd... function in the callback.
  542. '' This fixes Amipro's problem.
  543. '' 
  544. ''    Rev 1.42   06 Jun 1994 14:09:04   cmoy
  545. '' In SetCustomInfo refreshed the drive space available box more often.
  546. '' 
  547. ''    Rev 1.41   05 Jun 1994 20:11:46   ptilton
  548. '' Added calls to update OracleHomeDir and NotesDataDir Symbols in copylist
  549. '' 
  550. ''    Rev 1.40   02 Jun 1994 12:49:04   thangv
  551. '' 
  552. '' Removed an extra , in line 1759.
  553. '' 
  554. ''    Rev 1.39   02 Jun 1994 12:43:38   thangv
  555. '' 
  556. '' Added TrimNetlotusapp code to NODELOTUSAPPCB.
  557. '' 
  558. ''    Rev 1.38   01 Jun 1994 16:54:36   mmeth
  559. '' Check The return code from change path, and don't bring down the
  560. '' dialog, if the calling function returns gBACK
  561. '' 
  562. ''    Rev 1.37   26 May 1994 17:14:12   thangv
  563. '' 
  564. '' Added a check to ungrey IDC_TEXT3 in SIZEOFINSTALLCB for a simple
  565. '' product (like organizer) that supports only full install.
  566. '' 
  567. ''    Rev 1.36   25 May 1994 14:32:46   cmoy
  568. '' 
  569. '' removed rebooting feature instead a msg is sent to install.c
  570. '' 
  571. ''    Rev 1.35   18 May 1994 14:56:34   tingmann
  572. '' add SetYieldActive calls around lcb handling
  573. '' 
  574. ''    Rev 1.34   09 May 1994 15:11:36   ddupre
  575. '' Moved RegisterCallback call inside while loop in Custom1cb subroutine. JG
  576. '' 
  577. ''    Rev 1.33   06 May 1994 14:17:56   mzgripce
  578. '' 
  579. '' change progmancb to work for server
  580. '' 
  581. ''    Rev 1.32   06 May 1994 08:32:38   ddupre
  582. '' Added Lot_LCBSetSel to the SRVNODEOPTIONSCB SUB to select the first lb item
  583. '' 
  584. ''    Rev 1.31   05 May 1994 15:42:50   thangv
  585. '' Fixed the problem with the size of installcb not putting
  586. '' the correct focus on the radio button.
  587. '' 
  588. ''    Rev 1.30   05 May 1994 15:35:22   mzgripce
  589. '' fixed spr #28876
  590. '' 
  591. ''    Rev 1.29   02 May 1994 13:55:26   mmeth
  592. '' Jame's fix for set focus
  593. '' 
  594. ''    Rev 1.27   26 Apr 1994 18:33:14   mzgripce
  595. '' fixed spr 28121
  596. '' 
  597. ''    Rev 1.26   15 Apr 1994 13:15:06   mmeth
  598. '' added space between notepad.exe and readme.txt
  599. '' 
  600. ''    Rev 1.25   13 Apr 1994 14:07:22   cmoy
  601. '' 
  602. '' Modified callbacks to unbold text.
  603. '' 
  604. ''    Rev 1.24   13 Apr 1994 12:40:20   thangv
  605. '' Removed the extra `character in line 2010.
  606. '' 
  607. ''    Rev 1.23   13 Apr 1994 09:24:02   cmoy
  608. '' Added AUTOEXECCB and INSTALLCOMPLETECB
  609. '' 
  610. ''    Rev 1.22   12 Apr 1994 16:51:10   thangv
  611. '' Changed SIZEOFINSTALLCB: Removed the truncation of lotusapp
  612. '' in the display.Now lotusapp will be displayed.(lines 1033,1034 old
  613. '' code.). Fixed the bug.
  614. '' 
  615. ''    Rev 1.21   31 Mar 1994 10:30:38   thangv
  616. '' 
  617. '' Size of Install Callback for a single product with no lotusapp
  618. '' was trying to validate lotusappdir. put the check to see if the
  619. '' product supported share. fixed it.
  620. '' 
  621. ''    Rev 1.20   28 Mar 1994 17:10:02   thangv
  622. '' 
  623. '' resourced Notepad.exe and readnet.txt to SID_NOTEPADEXE and
  624. '' SID_READNETTXT
  625. '' 
  626. ''    Rev 1.19   28 Mar 1994 15:39:46   mzgripce
  627. '' change SIZEOFINSTALLCB to not add lotusapp word to the lotusapp directory for
  628. '' server
  629. '' 
  630. ''    Rev 1.18   28 Mar 1994 14:29:08   mmeth
  631. '' Changes with Christopher, obsoleteing dialosg
  632. '' 
  633. ''    Rev 1.17   28 Mar 1994 10:01:12   mmeth
  634. '' Greying out Change Directory Boutton for Shared Components
  635. '' 
  636. ''    Rev 1.16   25 Mar 1994 14:14:12   mzgripce
  637. '' added getlotusappdircb
  638. '' 
  639. ''    Rev 1.15   15 Mar 1994 12:30:18   jbrodeur
  640. '' Fix Node Inst Error
  641. '' 
  642. ''    Rev 1.14   11 Mar 1994 17:07:26   thangv
  643. '' 
  644. '' Set the SYM_NETWORK symbol to gDISTRIBUTION and checked
  645. '' to incorporate this WELCOMECB
  646. '' 
  647. ''    Rev 1.13   08 Mar 1994 14:47:22   mmeth
  648. '' 
  649. '' Hide the path button in custom1cb
  650. '' 
  651. ''    Rev 1.12   08 Mar 1994 14:35:14   mzgripce
  652. '' move ResetWinWinsys... call out of single prod if in SIZEOFINSTALLCB
  653. '' 
  654. ''    Rev 1.11   08 Mar 1994 10:55:28   mmeth
  655. '' fixed the Welcome Box
  656. '' 
  657. ''    Rev 1.10   07 Mar 1994 18:08:38   cmoy
  658. '' Added DISTSIZEINSTALLCB callback
  659. '' 
  660. ''    Rev 1.9   07 Mar 1994 17:56:04   mzgripce
  661. '' make resetWinWinsys SUB public
  662. '' 
  663. ''    Rev 1.8   07 Mar 1994 15:31:12   mzgripce
  664. '' fixed NODENODEDEOPTIONSCB
  665. '' 
  666. ''    Rev 1.7   02 Mar 1994 09:18:14   mzgripce
  667. '' Fixed SRVNODEOPTIONSCB using Reg_ReSet... and counting for customize
  668. '' 
  669. ''    Rev 1.6   01 Mar 1994 11:29:46   mmeth
  670. '' Fixed misspelling in SYM_SMARTSUITE....
  671. '' 
  672. ''    Rev 1.5   01 Mar 1994 10:33:06   mmeth
  673. '' ELSE IF --> ELSEIF
  674. '' 
  675. ''    Rev 1.4   28 Feb 1994 17:21:10   cmoy
  676. '' Added DB_SIZEOFINSTALL6 & 7 for server and standard
  677. '' installs in Lot_GetSizeofInstall
  678. '' 
  679. ''    Rev 1.3   25 Feb 1994 18:37:12   mzgripce
  680. '' add Lot_SetSpaceDirTip(), SRVNODEOPTIONSCB AND NODENODEOPTIONSCB
  681. '' 
  682. ''    Rev 1.2   18 Feb 1994 13:29:52   mmeth
  683. '' 
  684. '' Now check for Listlength of Reg_GetDirSymbolList
  685. '' 
  686. ''    Rev 1.1   15 Feb 1994 15:01:50   mmeth
  687. '' added pvcs line for toolkit.lss &
  688. '' 
  689. ''    Rev 1.0   11 Feb 1994 10:56:22   jbrodeur
  690. '' Initial Revision
  691. ''----------------------------------------------------------------------
  692. ''   Date     Vers. Pgmr  SPR#  Change
  693. ''----------------------------------------------------------------------
  694. '' 02-04-94   0018  MMETH      changed characters allowed in progrmangroup
  695. '' 02-04-94   0017  MMETH      SIZEOFINSTALLCB now support distribtuin dialog also
  696. ''!
  697. '' 02-01-94   0016  MZ         Added PROGMANGROUPCB
  698. '' 02-02-94   0015  MMETH      added NODELOTUSAPP stuff
  699. '' 01-24-94   0014  TQI        Capture all function returns (lsi36)
  700. '' 01-21-94   0013  DND         Custom2 shows the tips in normal text.
  701. '' 01-21-94   0012  MZ          Add SRV_SUCCESSCB
  702. '' 01-21-94   0011  MMETH       Added gNext parm to Lot_Call1Product
  703. '' 01-21-94   0010  DND         The path change dialogs now work correctly
  704. ''                              for server.
  705. '' 01-20-94   0009  DND         SIZEOFINSTALL should work for SmartSuite.
  706. ''                              Call the PathChange callbacks
  707. '' 01-19-94   0008  DND         Finish SINGLESIZEOFINSTALLCB. Added
  708. ''                              Lot_GetSizeOfInstall
  709. '' 01-19-94   0007  MMeth       Move SYM_UPDATELIST$ abd SYM_NORMALFONT
  710. '' 01-13-94   0006  DND         Add ability to change the currently shown
  711. ''                              path. Removed CHNGPATHBASE, PROGRAMPATHCB,
  712. ''                              Lot_DetectVersionPriorToDarwinA,
  713. ''                              PathChange123A, Lot_CheckProductDirs.
  714. '' 01-12-94   0005  DND         The custom dialogs now show the path
  715. ''                              based on what LCB item is selected.
  716. ''                              IN PROCESS
  717. '' 01-12-94   0004  MMETH       Changed Return code of CallProd to string
  718. '' 01-12-94   0003  MMETH       Commented out call to PathChang123A
  719. '' 01-11-94   0002  TQI         Option declare
  720. '' 01-10-94   0001  MZ          Make all symbols Constants and put them
  721. ''                              in GLOBALS.LSS
  722. '' 01-05-94   0000  DND         Initial checkin
  723. ''----------------------------------------------------------------------
  724. ''
  725. ''**********************************************************************
  726.  
  727. USE "AUTOMATE"
  728. OPTION DECLARE
  729.  
  730. '** Constants ----------------------------------------------------------
  731.  
  732.  
  733. CONST MAX_PAGES          = 9     '** Match LT_MAXPAGES from notebook.h
  734. CONST LCBITEM_ENTIRE     = 0
  735. CONST LCBITEM_SELECTED   = 1
  736. CONST LCBITEM_TEXT       = 2
  737. CONST LCBITEM_SIZE       = 3
  738. CONST LCBITEM_CHAPTER    = 4
  739.  
  740. CONST SYM_CUSTOMCOST$    = "CustomCostList"  '** Use only in this module
  741.  
  742. CONST UM_SETBITMAP       = WM_USER+100
  743.  
  744. '** Module globals -----------------------------------------------------
  745.  
  746. '** Structure to contain static information of a page (Custom)
  747. TYPE PAGEINFO
  748.    szChapter AS STRING     '** Chapter that started the page
  749.    idPage    AS INTEGER    '** Page ID
  750.    hDlgPage  AS LONG       '** Page dialog handle
  751.    nSel      AS INTEGER    '** Current Selection in page
  752. END TYPE
  753.  
  754. '** These module globals are used for CUSTOM1 and CUSTOM2
  755. DIM ghdlg&                             '** Save the parent dialog
  756. DIM gCurrentPageIndex%                 '** The current page index (into array)
  757. DIM gNumPages%                         '** Number of pages in gPageArray
  758. DIM gPageArray(MAX_PAGES) AS PAGEINFO  '** Page info for up to 8 pages
  759. '** Folder
  760. DIM gEntered$
  761. '** Focus problems
  762. DIM gPrevInst%
  763.  
  764. '** Declares -----------------------------------------------------------
  765.  
  766. DECLARE PUBLIC FUNCTION Lot_ConfirmNamesDlg  () AS STRING
  767. DECLARE PUBLIC FUNCTION Lot_GetSizeOfInstall () AS STRING
  768. DECLARE PUBLIC SUB      ResetWinWinsysSymbols()
  769. DECLARE PUBLIC FUNCTION Lot_SharedWindowsDlg (Id%) AS STRING
  770.  
  771. DECLARE SUB      SetCustomInfo(fOnTab%,fNewSpace%,fUpdateAll%)
  772. DECLARE FUNCTION DoesFileExistInDir (dirlist$) AS INTEGER
  773. DECLARE SUB      Lot_SetSpaceDirTip(hDlg&,chpt$,index%,ProdNum%,tiponly%)
  774.  
  775. '*************************************************************************
  776. '************************* Public Functions ******************************
  777. '*************************************************************************
  778.  
  779. '*************************************************************************
  780. '** PUBLIC FUNCTION Lot_ConfirmNamesDlg () AS STRING
  781. '** Purpose:   This function puts up the DB_CONFIRMNAME dlg box.
  782. '**     
  783. '**     
  784. '** Author:
  785. '** Arguments:
  786. '**     
  787. '** Returns:
  788. '**     
  789. '*************************************************************************
  790.  
  791. PUBLIC FUNCTION Lot_ConfirmNamesDlg () AS STRING
  792.  
  793.    AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT3)
  794.    AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT4)
  795.    AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  796.     
  797.    SetListItem "IDC_TEXT", 1, GetSymbolValue(SYM_NAME$)
  798.    SetListItem "IDC_TEXT", 2, GetSymbolValue(SYM_COMPANY$)
  799.  
  800.    Lot_ConfirmNamesDlg = PopupModalDlg (DB_CONFIRMNAMES, DB_CONFIRMNAMES)
  801.  
  802. END FUNCTION
  803.  
  804. '*************************************************************************
  805. '** PUBLIC FUNCTION Lot_GetSizeOfInstall () AS STRING
  806. '** Purpose:   Bring up the appropriate size dialog. When this dialog
  807. '**            comes in, all products are set to the value in
  808. '**            SYM_SIZEOFINSTALL$. Before leaving all products are
  809. '**            set again to the value in SYM_SIZEOFINSTALL$
  810. '**     
  811. '** Author: DND
  812. '** Arguments:
  813. '** Symbols:   SYM_SIZEOFINSTALL$ - The default install type. Reset
  814. '**                                 to the selected when done.
  815. '**     
  816. '** Returns: Value from PopupModalDlg
  817. '**     
  818. '*************************************************************************
  819. PUBLIC FUNCTION Lot_GetSizeOfInstall () AS STRING
  820.  
  821.    DIM   IdDlg%, i%, nProds%, network$, size$, notused%, NumDirs%
  822.  
  823.    '** Set all the applications to start with the default
  824.    size$   = GetSymbolValue(SYM_SIZEOFINSTALL$)
  825.    nProds% = Reg_GetNumberOfProducts()
  826.    FOR i% = 1 to nProds%
  827.       Reg_SetSelectedInstallType i%, size$
  828.    NEXT
  829.  
  830.    '** Bring up the size of install dialog
  831.    network$ = GetSymbolValue(SYM_NETWORK$)
  832.  
  833.    NumDirs% = Reg_GetProdSupportForExtraProdDirs(1)
  834.  
  835.  IF NumDirs < 1 Then
  836.    IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  837.       '** Check for the case where the product only does full install
  838.       IF Reg_GetProdSupportForFullInstall(1) <> FALSE AND _
  839.      Reg_GetProdSupportForMinInstall (1) =  FALSE AND _
  840.      Reg_GetProdSupportForCustInstall(1) =  FALSE THEN
  841.      '** This product only allows full install. If server then
  842.      '** Ask for two paths. If not, then ask for one.
  843.      IF network$ = gSERVER$ THEN
  844.     IF Reg_GetProdSupportForShare32(1) <> FALSE Then
  845.        IdDlg% = DB_SIZEOFINSTALL2
  846.     ELSE
  847.        IdDlg% = DB_SIZEOFINSTALL1
  848.     END IF
  849.  
  850.      ELSE
  851.     IdDlg% = DB_SIZEOFINSTALL1
  852.      END IF
  853.       ELSEIF network$ = gSERVER$ THEN
  854.  
  855.      '** For server, only Full and Custom are allowed. Both the
  856.      '** main path and lotusapp are asked for
  857.      IF Reg_GetProdSupportForShare32(1) <> FALSE Then
  858.     IdDlg% = DB_SIZEOFINSTALL3
  859.      ELSE
  860.     IdDlg% = DB_SIZEOFINSTALL5
  861.      END IF
  862.  
  863.       ELSE
  864.  
  865.      '** Use the dialog with three choices and choices are grayed.
  866.      '** Only the main path is asked for.
  867.      IdDlg% = DB_SIZEOFINSTALL4
  868.  
  869.       END IF
  870.  
  871.     '** SmartSuite
  872.    ELSEIF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  873.  
  874.     IF network$ = gSERVER$ THEN
  875.         IdDlg% = DB_SIZEOFINSTALL6 '** server
  876.     ELSE
  877.         IdDlg% = DB_SIZEOFINSTALL7 '** standard or node
  878.     END IF
  879.  
  880.     ELSE
  881.       '** TEMPORARY ???MMETH
  882.       IdDlg% = DB_SIZEOFINSTALL4
  883.  
  884.    END IF
  885.  
  886.  ELSE
  887.  
  888.    IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  889.  
  890.       '** Check for the case where the product only does full install
  891.       IF Reg_GetProdSupportForFullInstall(1) <> FALSE AND _
  892.      Reg_GetProdSupportForMinInstall (1) =  FALSE AND _
  893.      Reg_GetProdSupportForCustInstall(1) =  FALSE THEN
  894.  
  895.      '** This product only allows full install. If server then
  896.      '** Ask for two paths. If not, then ask for one.
  897.  
  898.      IF network$ = gSERVER$ THEN
  899.     IF Reg_GetProdSupportForShare32(1) <> FALSE Then
  900.        IdDlg% = DB_SIZEOFINSTALL9
  901.     ELSE
  902.        IdDlg% = DB_SIZEOFINSTALL8
  903.     END IF
  904.      ELSE
  905.     IdDlg% = DB_SIZEOFINSTALL8
  906.      END IF
  907.  
  908.       ELSEIF network$ = gSERVER$ THEN
  909.  
  910.      '** For server, only Full and Custom are allowed. Both the
  911.      '** main path and lotusapp are asked for
  912.      IF Reg_GetProdSupportForShare32(1) <> FALSE Then
  913.     IdDlg% = DB_SIZEOFINSTALL10
  914.      ELSE
  915.     IdDlg% = DB_SIZEOFINSTALL12
  916.      END IF
  917.  
  918.       ELSE
  919.  
  920.      '** Use the dialog with three choices and choices are grayed.
  921.      '** Only the main path is asked for.
  922.      IdDlg% = DB_SIZEOFINSTALL11
  923.  
  924.       END IF
  925.  
  926.     '** SmartSuite
  927.    ELSEIF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  928.     IF network$ = gSERVER$ THEN
  929.         IdDlg% = DB_SIZEOFINSTALL6 '** server
  930.     ELSE
  931.         IdDlg% = DB_SIZEOFINSTALL7 '** standard or node
  932.     END IF
  933.  
  934.     ELSE
  935.       '** TEMPORARY ???MMETH
  936.       IdDlg% = DB_SIZEOFINSTALL11
  937.      END IF
  938.  
  939.  END IF
  940.  
  941.    '** Ask the user for the selected size
  942.    notused% = RegisterCallback("CALLBACK", "SIZEOFINSTALLCB")
  943.    Lot_GetSizeOfInstall = PopupModalDlg (IdDlg%, CLNG(IdDlg%))
  944.  
  945.    '** Reset all the sizes
  946.    size$ = GetSymbolValue(SYM_SIZEOFINSTALL$)
  947.    FOR i% = 1 to nProds%
  948.       Reg_SetSelectedInstallType i%, size$
  949.    NEXT
  950.  
  951. END FUNCTION
  952.  
  953. '*************************************************************************
  954. '** PUBLIC FUNCTION GetGroupName () AS STRING
  955. '** Purpose:   Get the group name from the dialog and verify it.
  956. '**     
  957. '** Author: 
  958. '** Arguments:
  959. '**        fDisplayErr%        - TRUE if the error needs to be displayed.
  960. '** Symbols:   
  961. '**     
  962. '** Returns: Program Group Name
  963. '**     
  964. '*************************************************************************
  965. FUNCTION GetGroupName () AS STRING
  966.     DIM count%, charlen%, failed%, inloopset%
  967.     DIM CheckName$, targetstr$, EnteredName$
  968.  
  969.    DIM InvChar LIST AS STRING
  970.    
  971.    IF LENBP(GetListItem ("IDC_EDIT", 1)) < 254 THEN
  972.         EnteredName$=GetListItem("IDC_EDIT",1)
  973.    ELSE
  974.         targetstr$ = GetListItem ("IDC_EDIT", 1)
  975.  
  976.         IF IsDBCSFirstAtOffset (targetstr$, 254) = 1 THEN
  977.             EnteredName$=LEFT(GetListItem ("IDC_EDIT", 1), 253)
  978.         ELSE
  979.             EnteredName$=LEFT(GetListItem ("IDC_EDIT", 1), 254)
  980.         END IF
  981.     END IF
  982.  
  983.     IF EnteredName$ = "" AND NOT IsNewShell() THEN
  984.        EnteredName$=Reg_GetProgManagerGroupName(1)
  985.     END IF
  986.  
  987.     
  988.    InvChar("\") = "1"
  989.    InvChar("/") = "1"
  990.    InvChar("<") = "1"
  991.    InvChar(">") = "1"
  992.    InvChar("*") = "1"
  993.    InvChar("?") = "1"
  994.    InvChar(|"|) = "1"
  995.    InvChar("|") = "1"
  996.    InvChar(":") = "1"
  997.  
  998.    failed% = 0
  999.  
  1000.    IF IsNewShell() THEN
  1001.       ' Look for invalid char.  Fail if any are invalid
  1002.  
  1003.       CheckName$ = EnteredName$  
  1004.       FOR count% = 1 TO LEN(EnteredName$)
  1005. '             charlen% = FDBCSCharLen(CheckName$,0)
  1006.              IF ISELEMENT(InvChar(LEFT$(CheckName$,1))) = TRUE THEN
  1007.                 failed% = 1
  1008.                 EXIT FOR
  1009.              END IF 
  1010. '             count% = count% + charlen% - 1
  1011.              CheckName$ = RIGHT$(Checkname$,LEN(CheckName$)-1)
  1012.       NEXT
  1013.  
  1014.       InvChar(" ") = "1"
  1015.    END IF
  1016.  
  1017.    IF NOT IsNewShell() THEN
  1018.      InvChar("+") = "1"
  1019.      InvChar("=") = "1"
  1020.      InvChar("[") = "1"
  1021.      InvChar("]") = "1"
  1022.      InvChar(";") = "1"
  1023.      InvChar(",") = "1"
  1024.      InvChar(")") = "1"
  1025.      InvChar("(") = "1"
  1026.      InvChar(".") = "1"  '* MMETH; I believe that this is a valid character
  1027.  
  1028.      'TV: These are also invalid characters.
  1029.      InvChar("'") = "1" 
  1030.      InvChar("@") = "1" 
  1031.      InvChar("{") = "1" 
  1032.      InvChar("}") = "1" 
  1033.      InvChar("#") = "1" 
  1034.      InvChar("%") = "1" 
  1035.      InvChar("!") = "1" 
  1036.      InvChar("`") = "1" 
  1037.      InvChar("$") = "1" 
  1038.      InvChar("^") = "1" 
  1039.      InvChar("~") = "1" 
  1040.      InvChar("-") = "1" 
  1041.      InvChar("_") = "1" 
  1042.      InvChar("&") = "1" 
  1043.    END IF
  1044.  
  1045.    IF failed% = 0 THEN
  1046.       failed% = 1
  1047.  
  1048.       ' Validate the name if it is a new one
  1049.       ' The ilegal characters in the name are:
  1050.       ' * + | : " < > ? + { } \ ; ,  /  MMETH removed the period
  1051.       ' if the path consists only of " then the group name will be )]
  1052.       ' if the path consists only of ) or ] or , the group is not created
  1053.  
  1054.       '** TV: Reject only if the group name consists entirely of Invalid 
  1055.       '**characters
  1056.       CheckName$ = EnteredName$  
  1057.       FOR count% = 1 TO LEN(EnteredName$)
  1058. '     charlen% = FDBCSCharLen(CheckName$,0)
  1059.      IF ISELEMENT(InvChar(LEFT$(CheckName$,1))) = FALSE THEN
  1060.         failed% = 0
  1061.         EXIT FOR
  1062.      END IF 
  1063. '     count% = count% + charlen% - 1
  1064.      CheckName$ = RIGHT$(Checkname$,LEN(CheckName$)-1)
  1065.       NEXT
  1066.    END IF
  1067.  
  1068.    '*** TV: The " character cannot be permitted.
  1069.    '** This breaks the script execution later!!
  1070.    IF INSTR(1,EnteredName$,|"|) <> 0 THEN
  1071.       failed% = 1
  1072.    END IF 
  1073.  
  1074.  
  1075.  IF IsNewShell() THEN
  1076.    IF failed% <> 0 THEN
  1077.       ShowPathErrorNoDlgExit SID_ERR_INVALIDFOLDERNAME,SID_ERR_INVALIDFOLDERNAMEDESC95,EnteredName$
  1078.       GetGroupName = ""
  1079.    ELSE
  1080.       GetGroupName = EnteredName$
  1081.    END IF
  1082.  ELSE   
  1083.    IF failed% <> 0 THEN
  1084.        ShowPathErrorNoDlgExit SID_ERR_INVALIDGROUPNAME,SID_ERR_INVALIDGROUPNAMEDESC,EnteredName$
  1085.       GetGroupName = ""
  1086.    ELSE
  1087.       GetGroupName = EnteredName$
  1088.    END IF
  1089.  END IF
  1090.  
  1091. END FUNCTION
  1092.  
  1093. PUBLIC CONST WM_NEXTDLGCTL = 40    ' 0x0028
  1094.  
  1095. '*************************************************************************
  1096. '************************* Callbacks *************************************
  1097. '*************************************************************************
  1098. '*************************************************************************
  1099. '** PROGMANGROUPCB
  1100. '** Purpose:    This is a for the Program Group selection
  1101. '** IN SYMBOLS  
  1102. '**     
  1103. '** Author:
  1104. '** Arguments:
  1105. '**     
  1106. '**     
  1107. '** Returns:
  1108. '**     
  1109. '*************************************************************************
  1110. SUB PROGMANGROUPCB (hDlg&, CtrlId%, Classes$, LInst&)
  1111.    DIM ProgManIni$, Group$, GroupId%, Index%,notused%,DefaultGroup$
  1112.    DIM EnteredName$,order%,RootFolder$
  1113.    DIM Inst%
  1114.  
  1115.    ' *** script port to win32
  1116.    Inst% = CINT(LInst&) 
  1117.  
  1118.    SELECT CASE Classes$
  1119.  
  1120.    CASE "__DLGINIT"
  1121.  
  1122.     AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT1)
  1123.     AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  1124.  
  1125.     IF NOT IsNewShell() THEN
  1126.     ProgManIni$=GetWindowsDir()+"progman.ini"
  1127.     END IF
  1128.     DefaultGroup$=Reg_GetProgManagerGroupName(1)
  1129.     IF DefaultGroup$="" THEN
  1130.        DefaultGroup$=LdString(SID_TKT_DEF_PROGMANGRP)
  1131.     END IF
  1132.  
  1133.     SetListItem "IDC_EDIT", 1, DefaultGroup$
  1134.     IF IsNewShell() THEN
  1135.     SetListItem "IDC_TREE",1, Reg_GetSelectedFolder(1)
  1136.     AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1137.     AddListItem SYM_UPDATELIST$, "IDC_TREE"
  1138.     AddListItem SYM_UPDATELIST$, "IDC_B1"
  1139.     AddListItem SYM_UPDATELIST$, "IDC_B2"
  1140.     AddListItem SYM_UPDATELIST$, "IDC_B3"
  1141.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_B1), TRUE))
  1142.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_B2), FALSE))
  1143.     ELSE
  1144.     if (GetListLength("IDC_LIST1") > 1) THEN
  1145.         RemoveSymbol("IDC_LIST1")
  1146.     END IF
  1147.     SetListItem "IDC_LIST1",1, DefaultGroup$
  1148.     notused% = CInt(FAddProgramGroupsToList(HKEY_LOCAL_MACHINE&, gPROGMANREGNAME, "IDC_LIST1", DefaultGroup$))
  1149.     AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1150.     AddListItem SYM_UPDATELIST$, "IDC_LIST1"
  1151.     END IF
  1152.  
  1153.    CASE "IDC_EDIT"
  1154.     IF IsNewShell() THEN
  1155.           IF GetFocus() = GetDlgItem(hDlg, IDC_EDIT1) THEN
  1156.             EnteredName$ = GetGroupName()
  1157.             IF EnteredName$ = "" THEN
  1158.                 notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_B1), FALSE))
  1159.                 notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1160.                 SetFocus(GetDlgItem(hDlg&,IDC_EDIT1))
  1161.             ELSE
  1162.                 notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_B1), TRUE))
  1163.                 notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1164.                 gEntered$=GetListItem("IDC_EDIT",1)
  1165.                 notused%=FChangeNameCurrTreeItem(hDlg&, gEntered$)
  1166.                  Reg_SetProgManagerGroup 1,gEntered
  1167.             END IF
  1168.       END IF
  1169.     END IF
  1170.  
  1171.    CASE "IDC_TREE"
  1172.         EnteredName$=GetGroupName()
  1173.         IF EnteredName$ = "" THEN
  1174.           SetListItem "__LASTSTATUS", 1, "Q"
  1175.             SetFocus(GetDlgItem(hDlg&,IDC_EDIT1))
  1176.             EXIT SUB
  1177.         END IF
  1178.  
  1179.    DISPLAYTEXT:
  1180.         EnteredName$ = GetListItem("IDC_TREE", 1)
  1181.         Reg_SetSelectedFolder 1,EnteredName$
  1182.           IF DoesDirExist (Reg_GetSelectedFolder(1)) THEN
  1183.             notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_EDIT1), FALSE))
  1184.             notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_B2), FALSE))
  1185.         ELSE
  1186.             notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_EDIT1), TRUE))
  1187.             notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_B2), TRUE))
  1188.         END IF
  1189.         RootFolder = Reg_GetRootFolder()
  1190.         order% = 1
  1191.         DO
  1192.           Index% = order%
  1193.           order% = InStr(Index%+1,RootFolder,"\")
  1194.         LOOP UNTIL order% = 0
  1195.         Group$ = RIGHT$(EnteredName$,LEN(EnteredName$)-Index%)
  1196.         SetListItem "IDC_TEXT",3,Group$
  1197.         AddListItem SYM_UPDATELIST$, "IDC_TEXT3"
  1198.         gEntered = GetLastPathComponent(Group$)
  1199.         SetListItem "IDC_EDIT", 1, gEntered
  1200.         AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1201.  
  1202.    CASE "IDC_LIST1"
  1203.         EnteredName$=GetListItem("IDC_LIST1",Inst%)
  1204.         SetListItem "IDC_EDIT", 1, EnteredName$
  1205.         AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1206.  
  1207.    CASE "IDC_B"
  1208.     IF CtrlId% = cIDC_B1 THEN
  1209.         IF GetSymbolValue("USEDEFAULTGRP")<>"" THEN
  1210.             EnteredName$=Reg_GetProgManagerGroupName(1)
  1211.             IF EnteredName$="" THEN
  1212.                EnteredName$=LdString(SID_TKT_DEF_PROGMANGRP)
  1213.             END IF
  1214.               RemoveSymbol("USEDEFAULTGRP")
  1215.          ELSE
  1216.             EnteredName$=LdString(SID_TKT_DEF_NEWFOLDERNAME)
  1217.         END IF
  1218.       Group$ = GetListItem("IDC_TREE", 1)+"\"+EnteredName$
  1219.       IF LENBP(Group$) > (MAX_DIR_PATH - 11) THEN
  1220.          '** This is only about the path length and might need a new message
  1221.             ShowPathError SID_ERR_PATHLEN, SID_ERR_PATHLEN_DESCR, _
  1222.             STR$(MAX_DIR_PATH - CINT(GetSymbolValue(SYM_DOSMAXPATHDIFF$)))+LdString(SID_ERR_PATHLEN_CHARS)
  1223.       ELSE
  1224.            Index% = 0
  1225.             DO WHILE DoesDirExist (Group$)
  1226.                Index% = Index%+1
  1227.               Group$ = GetListItem("IDC_TREE", 1)+"\"+EnteredName$+"("+CSTR(Index%)+")"
  1228.             LOOP
  1229.             If Index% > 0 Then
  1230.                 EnteredName$ = EnteredName$+"("+CSTR(Index%)+")"
  1231.             End If
  1232.             Reg_SetProgManagerGroup 1,EnteredName$
  1233.             notused% = FAddItemToTree(hDlg&, EnteredName$)
  1234.             SetFocus(GetDlgItem(hDlg&,IDC_EDIT1))
  1235. 'JMD: LSCR32FVVK: Change focus off and back will highlight selection
  1236.             notused% = SendMessage (hDlg&,WM_NEXTDLGCTL, 1, 0)
  1237.             notused% = SendMessage (hDlg&,WM_NEXTDLGCTL, 0, 0)
  1238.         END IF
  1239.     ELSEIF CtrlId% = cIDC_B1+1 THEN
  1240.         notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_B1), TRUE))
  1241.         notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1242.         notused%=FDeleteCurrTreeItem(hDlg&)
  1243.         IF DoesDirExist(GetListItem("IDC_TREE",1)) THEN
  1244.             SetFocus(GetDlgItem(hDlg&,IDC_B1))
  1245.         END IF
  1246.     ELSE
  1247.         Inst% = 1
  1248.         GOTO DISPLAYTEXT
  1249.    END IF
  1250.  
  1251.    CASE "IDC_OK"
  1252.     IF IsNewShell() THEN
  1253.         Reg_SetSelectedFolder 1,GetListItem("IDC_TREE", 1)
  1254.     ELSE
  1255.     Reg_SetProgManagerGroup 1,GetGroupName()
  1256.     END IF
  1257.  
  1258.    CASE "IDC_BACK"
  1259.    CASE "IDC_CITHELP"
  1260.    CASE "IDC_EXIT"
  1261.  
  1262.    END SELECT   
  1263.  
  1264. END SUB
  1265.  
  1266. '*************************************************************************
  1267. '** WELCOMECB
  1268. '** Purpose:    This is a for the Welcome Dialog Boxes
  1269. '**             there are two distinct types of dialogs:
  1270. '**             A STANDARD/SERVER dialog vs a NODE dialog.
  1271. '**
  1272. '** IN SYMBOLS  NAME, COMPANY, NETWORK  
  1273. '**     
  1274. '** Author:
  1275. '** Arguments:
  1276. '**     
  1277. '**     
  1278. '** Returns:
  1279. '**     
  1280. '*************************************************************************
  1281. SUB WELCOMECB (hDlg&, CtrlId%, Classes$, LInst&)
  1282.    DIM lname$, company$, network$, i%, notused%
  1283.    DIM sz$
  1284.  
  1285.    ' Changes from Japan for DBCS        
  1286.    DIM targetstr$, Inst%
  1287.  
  1288.    Inst% = CINT(LInst&)
  1289.    ' End: Changes from Japan for DBCS   
  1290.  
  1291.    SELECT CASE Classes$
  1292.  
  1293.    CASE "__DLGINIT"
  1294.  
  1295.       '** Set the product bitmap
  1296.       SetListItem "IDC_BMP", 1, STR$(IDD_TKT_PROD_BMP)
  1297.  
  1298.       lname$   = GetSymbolValue(SYM_NAME$)
  1299.       company$ = GetSymbolValue(SYM_COMPANY$)
  1300.       SetListItem "IDC_EDIT", 1, lname$
  1301.       SetListItem "IDC_EDIT", 2, company$
  1302.  
  1303.       '** Set text to normal font
  1304.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT4)
  1305.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT5)
  1306.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT6)
  1307.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT7)
  1308.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT8)
  1309.       AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  1310.       AddListItem SYM_UPDATELIST$, "IDC_BMP1"
  1311.       AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1312.       AddListItem SYM_UPDATELIST$, "IDC_EDIT2"
  1313.  
  1314.       network$ = GetSymbolValue(SYM_NETWORK$)
  1315.       IF network$ = "" THEN
  1316.      SetSymbolValue SYM_NETWORK$, gSTANDARD$
  1317.       ELSEIF network$ = gNODE$ Then
  1318.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_EDIT2), FALSE))
  1319.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_TEXT3), FALSE))
  1320.       ELSEIF network$ = gSERVER$ OR network$ = gDISTRIBUTION$ THEN
  1321.      SetListItem "IDC_B", 1, "T"
  1322.      AddListItem SYM_UPDATELIST$, "IDC_B1"
  1323.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_EDIT1), FALSE))
  1324.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_TEXT2), FALSE))
  1325.       END IF
  1326.  
  1327.       '** if userName OR companyName is empty inctivate the next button
  1328.       IF network$ = gSTANDARD$ THEN
  1329.      IF LEN(GetListItem ("IDC_EDIT", 1)) < 1 OR _ 
  1330.     LEN(GetListItem ("IDC_EDIT", 2)) < 1 THEN
  1331.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1332.      ELSE
  1333.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1334.      END IF
  1335.  
  1336.       ELSEIF network$ = gNODE$ THEN
  1337.      IF LEN(GetListItem ("IDC_EDIT", 1)) < 1 THEN
  1338.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1339.      ELSE
  1340.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1341.      END IF
  1342.  
  1343.       ELSEIF network$ = gSERVER$ THEN
  1344.      IF LEN(GetListItem ("IDC_EDIT", 2)) < 1 THEN
  1345.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1346.      ELSE
  1347.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1348.      END IF
  1349.  
  1350.       ELSE
  1351.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1352.       END IF
  1353.  
  1354.    CASE "IDC_B"
  1355.  
  1356.       If GetListItem("IDC_B",1) = "F" Then
  1357.      SetSymbolValue SYM_NETWORK$, gSTANDARD$
  1358.       Else
  1359.      '*** if both Srv and Dist are supported then Srv overrides
  1360.      If Reg_GetProdSupportForSrv(1) = 1 Then
  1361.     SetSymbolValue SYM_NETWORK$, gSERVER$
  1362.      ElseIf Reg_GetProdSupportForDist(1) = 1 Then
  1363.     SetSymbolValue SYM_NETWORK$, gDISTRIBUTION$
  1364.      End If 
  1365.       End If
  1366.  
  1367.       '** If Server checkbox is selected, grey out the User name. 
  1368.       IF IsDlgButtonChecked(hDlg&,IDC_B1) <> FALSE THEN
  1369.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_EDIT1), FALSE))
  1370.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_TEXT2), FALSE))
  1371.       ELSE
  1372.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_EDIT1), TRUE))
  1373.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_TEXT2), TRUE))
  1374.       END IF
  1375.  
  1376.       network$ = GetSymbolValue(SYM_NETWORK$)
  1377.       IF network$ = gSTANDARD$ THEN
  1378.      IF LEN(GetListItem ("IDC_EDIT", 1)) < 1 OR _ 
  1379.     LEN(GetListItem ("IDC_EDIT", 2)) < 1 THEN
  1380.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1381.      ELSE
  1382.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1383.      END IF
  1384.  
  1385.       ELSEIF network$ = gNODE$ THEN
  1386.      IF LEN(GetListItem ("IDC_EDIT", 1)) < 1 THEN
  1387.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1388.      ELSE
  1389.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1390.      END IF
  1391.  
  1392.       ELSEIF network$ = gSERVER$ THEN
  1393.      IF LEN(GetListItem ("IDC_EDIT", 2)) < 1 THEN
  1394.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1395.      ELSE
  1396.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1397.      END IF
  1398.  
  1399.       ELSE
  1400.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1401.       END IF
  1402.  
  1403.    CASE "IDC_EDIT"
  1404.  
  1405.       network$ = GetSymbolValue(SYM_NETWORK$)
  1406.       IF network$ = gSTANDARD$ THEN
  1407.      IF LEN(GetListItem ("IDC_EDIT", 1)) < 1 OR _ 
  1408.     LEN(GetListItem ("IDC_EDIT", 2)) < 1 THEN
  1409.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1410.      ELSE
  1411.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1412.      END IF
  1413.  
  1414.       ELSEIF network$ = gNODE$ THEN
  1415.      IF LEN(GetListItem ("IDC_EDIT", 1)) < 1 THEN
  1416.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1417.      ELSE
  1418.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1419.      END IF
  1420.  
  1421.       ELSEIF network$ = gSERVER$ THEN
  1422.      IF LEN(GetListItem ("IDC_EDIT", 2)) < 1 THEN
  1423.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), FALSE))
  1424.      ELSE
  1425.     notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1426.      END IF
  1427.  
  1428.       ELSE
  1429.      notused% = CINT(EnableWindow(GetDlgItem(hDlg&,IDC_OK), TRUE))
  1430.       END IF
  1431.  
  1432.    CASE "IDC_OK"
  1433.       network$ = GetSymbolValue(SYM_NETWORK$)
  1434.       FOR i% = 1 TO 2
  1435.      IF network$ = gNODE$ AND i% = 2 THEN
  1436.     Exit For
  1437.      END IF
  1438.      IF network$ = gSERVER$ AND i% = 1 THEN
  1439.     GOTO NEXTFIELD
  1440.      END IF
  1441.  
  1442.      IF LEN(GetListItem ("IDC_EDIT", i%)) < 1 THEN
  1443.     ErrorMsgNoDlgExit SID_TKT_ERR_NEEDNAMES, ""
  1444.     EXIT FOR
  1445.       END IF
  1446.  
  1447.      NEXTFIELD:
  1448.  
  1449.       NEXT
  1450.  
  1451.      ' Changes from Japan for DBCS  
  1452.      ' This code is intimately related to code in
  1453.      ' callback.lss:Lot_ReadDefaultsfromRi &
  1454.      ' lcomstf\userreg.cpp:ReadDefaultsfromRi
  1455.      IF LENBP(GetListItem ("IDC_EDIT", 1)) < 80 THEN
  1456.      SetSymbolValue SYM_NAME$,    GetListItem ("IDC_EDIT", 1)
  1457.      ELSE
  1458.      targetstr$ = GetListItem ("IDC_EDIT", 1)
  1459.      IF IsDBCSFirstAtOffset (targetstr$, 80) = 1 THEN
  1460.         SetSymbolValue SYM_NAME$,    LEFT(GetListItem ("IDC_EDIT", 1), 79)
  1461.      ELSE
  1462.         SetSymbolValue SYM_NAME$,    LEFT(GetListItem ("IDC_EDIT", 1), 80)
  1463.      END IF
  1464.      END IF
  1465.  
  1466.      IF LENBP(GetListItem ("IDC_EDIT", 2)) < 80 THEN
  1467.      SetSymbolValue SYM_COMPANY$, GetListItem ("IDC_EDIT", 2)
  1468.      ELSE
  1469.      targetstr$ = GetListItem ("IDC_EDIT", 2)
  1470.      IF IsDBCSFirstAtOffset (targetstr$, 80) = 1 THEN
  1471.        SetSymbolValue SYM_COMPANY$,    LEFT(GetListItem ("IDC_EDIT", 2), 79)
  1472.      ELSE
  1473.        SetSymbolValue SYM_COMPANY$,    LEFT(GetListItem ("IDC_EDIT", 2), 80)
  1474.      END IF
  1475.      END IF
  1476.      ' End: Changes from Japan for DBCS     
  1477.  
  1478.    '** Allow the user to exit without hitting the button
  1479.    Case "IDC_BACK"
  1480.       sz$ = PopupModalDlg (DB_EXITHISTORY, DB_EXITHISTORY)
  1481.       If sz$ = "BACK" Then
  1482.       SetListItem "__LASTSTATUS", 1, "Q"
  1483.    End If
  1484.  
  1485.    END SELECT   
  1486.  
  1487. END SUB
  1488.  
  1489. '************************************************************************
  1490. '*                   Routines to handle Custom                          *
  1491. '************************************************************************
  1492.  
  1493. '*************************************************************************
  1494. '** SUB CUSTOM1CB (hDlg&, CtrlId%, Classes$, LInst&)
  1495. '**
  1496. '** Purpose: Customize a product. This is main dialog proc. Each dialog
  1497. '**          page uses CUSTOM2CB.
  1498. '**
  1499. '**          This dialog callback can be used only once! Do not display
  1500. '**          more than one dialog at a time with this callback!
  1501. '**            
  1502. '** Author:    DND
  1503. '** Arguments: Callback args
  1504. '** Returns:   NONE
  1505. '*************************************************************************
  1506.  
  1507. SUB CUSTOM1CB (hDlg&, CtrlId%, Classes$, LInst&)
  1508.  
  1509.    DIM chpt$, product_name$, child$, dirsym$, network$
  1510.    DIM page%, tab_handle&
  1511.    DIM RC$, i%, notused%, Inst%, unused&
  1512.  
  1513.    Inst% = CINT(LInst&)
  1514.  
  1515.    SELECT CASE Classes$
  1516.  
  1517.    case "__DLGINIT"
  1518.  
  1519.       '** Set some globals
  1520.       gNumPages% = 0
  1521.       ghdlg& = hDlg&
  1522.  
  1523.       ''Display bmps with transparent background
  1524.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, "STRETCH"
  1525.  
  1526.       '** make text normal
  1527.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT6)
  1528.       AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  1529.  
  1530.       '** Hide the Path Button for a server or a language install
  1531.       network$ = GetSymbolValue(SYM_NETWORK$)
  1532.       If network$ = gSERVER$ OR _
  1533.      GetSymbolValue(SYM_INSTALLKIND$) = gLANGUAGEINSTALL$ _   
  1534.       Then 
  1535.     notused% = CINT(ShowWindow (GetDlgItem(hDlg&, IDC_B1), SW_HIDE))
  1536.     notused% = CINT(ShowWindow (GetDlgItem(hDlg&, IDC_TEXT4), SW_HIDE))
  1537.     notused% = CINT(ShowWindow (GetDlgItem(hDlg&, IDC_TEXT8), SW_SHOW))
  1538.       End If
  1539.       notused% = CINT(EnableWindow (GetDlgItem(ghdlg&, IDC_B1), FALSE))
  1540.  
  1541.       '** Set the starting chapter based on the current product
  1542.       i%    = Lot_GetCurrentProduct()
  1543.       chpt$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(i%) + gTOP$)
  1544.       chpt$ = Lot_GetFirstChild(chpt$, F_DISPLAY + F_CUSTOM)
  1545.  
  1546.       '** DND: If no first chapter then we need to do somthing
  1547.  
  1548.       WHILE (chpt$ <> "")
  1549.      product_name$ = Lot_GetChapterValStr(chpt$, F_NAME) 
  1550.      child$        = Lot_GetFirstChild(chpt$, F_DISPLAY + F_CUSTOM)
  1551.  
  1552.      '** Add new page to notebook
  1553.      notused% = RegisterCallback("CALLBACK","CUSTOM2CB")
  1554.      page% = Lot_AddPagetoNotebook(hDlg&,IDC_NOTEBOOK1,DBNM_1,product_name$)
  1555.      tab_handle& = Lot_GetPagehandle(hDlg&,IDC_NOTEBOOK1,page%)
  1556.        IF FPopulateLCB(tab_handle&, child$) = FALSE THEN
  1557.     ErrorMsg SID_ERR_POPULATELCB, ""
  1558.     ERROR STFQUIT
  1559.      END IF
  1560.  
  1561.      '** Store the page information
  1562.      gNumPages% = gNumPages% + 1
  1563.      gPageArray(gNumPages%).szChapter = chpt$
  1564.      gPageArray(gNumPages%).idPage    = page%
  1565.      gPageArray(gNumPages%).hDlgPage  = tab_handle&
  1566.      gPageArray(gNumPages%).nSel      = 1
  1567.  
  1568.      '** Make sure to save the page id of the first page. For now,
  1569.      '** use gCurrentPageIndex to save the page id of first page.
  1570.      IF gNumPages% = 1 THEN gCurrentPageIndex% = page%
  1571.  
  1572.      '** Goto next sibling of chpt$
  1573.      chpt$ = Lot_GetNextSibling(chpt$, F_DISPLAY + F_CUSTOM)  
  1574.       WEND
  1575.  
  1576.       Lot_TurnToPage hDlg&, IDC_NOTEBOOK1, gCurrentPageIndex%
  1577.       gCurrentPageIndex% = 1
  1578.       SetCustomInfo TRUE, TRUE, TRUE
  1579.  
  1580.    case "IDC_B"
  1581.       chpt$ = Lot_LCBGetItem(gPageArray(gCurrentPageIndex%).hDlgPage, _
  1582.          gPageArray(gCurrentPageIndex%).nSel,     _
  1583.          LCBITEM_CHAPTER)
  1584.       dirsym$ = Lot_GetChapterValStr(chpt$, F_DESTDIRSYM)
  1585.       SetSymbolValue SYM_CHANGEDIRSYMBOL$,  dirsym$
  1586.  
  1587.       IF GetSymbolValue(SYM_NETWORK$) = gSTANDARD$ THEN
  1588.  
  1589.             IF (dirsym$ <> SYM_WINDIR$ AND _
  1590.             dirsym$ <> SYM_LOTUSFONTSDIR$ AND _
  1591.             dirsym$ <> SYM_WINSYSDIR$) THEN
  1592.                 notused% = RegisterCallback ("CALLBACK", "CHANGEPRODUCTDIRCB")
  1593.                 RC$ = PopupModalDlg (DBM_CHANGEDIR, DBM_CHANGEDIR)
  1594.             END IF
  1595.  
  1596.       ELSE
  1597.  
  1598.             dirSym$ = Reg_GetDirSymbolList(Lot_GetCurrentProduct())
  1599.             '** SHOULD NEVER BE IN THIS CODE ANYWAY
  1600.             If GetListLength(dirSym$) >= 1 Then
  1601.                 dirSym$ = GetListItem(dirSym$, 1)
  1602.                 SetSymbolValue SYM_CHANGEDIRSYMBOL$,  dirsym$
  1603.                 notused% = RegisterCallback ("CALLBACK", "CHANGEPRODUCTDIRCB")
  1604.                 RC$ = PopupModalDlg (DBM_CHANGEDIR, DBM_CHANGEDIR)
  1605.             End If
  1606.  
  1607.       END IF
  1608.  
  1609. ''      SELECT CASE RC$
  1610. ''
  1611. ''      case "OK"
  1612. ''      SetCustomInfo FALSE, TRUE, TRUE
  1613. ''      unused& = SetFocus(GetDlgItem(hDlg&, IDC_B1))
  1614. ''
  1615. ''      case "BACK"
  1616. ''      SetCustomInfo TRUE, TRUE, TRUE
  1617. ''      unused& = SetFocus(GetDlgItem(hDlg&, IDC_B1))
  1618. ''
  1619. ''      END SELECT
  1620.     SetCustomInfo FALSE, TRUE, TRUE
  1621.  
  1622.    case "IDC_NOTEBOOK"
  1623.       FOR i% = 1 TO gNumPages%
  1624.             IF gPageArray(i%).idPage = Inst% THEN
  1625.                 gCurrentPageIndex% = i%
  1626.                 gPrevInst% = -1
  1627.                 SetCustomInfo TRUE, FALSE, TRUE
  1628.             EXIT FOR
  1629.              END IF
  1630.       NEXT
  1631.  
  1632.    case "IDC_OK"
  1633.       ''**Display bitmaps the default way from now on
  1634.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
  1635.  
  1636.       ResetWinWinsysSymbols
  1637.  
  1638.    case "__DLGDESTROY"
  1639.       ''**Display bitmaps the default way from now on
  1640.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
  1641.  
  1642.       RemoveSymbol SYM_CUSTOMCOST$
  1643.       RemoveSymbol SYM_CHANGEDIRSYMBOL$
  1644.  
  1645.    END SELECT
  1646.  
  1647. END SUB
  1648.  
  1649. '*************************************************************************
  1650. '** SUB CUSTOM2CB (hDlg&, CtrlId%, Classes$, LInst&)
  1651. '**
  1652. '** Purpose: Page dialogs. Use with CUSTOM1
  1653. '**
  1654. '**          This dialog callback can be used only once! Do not display
  1655. '**          more than one dialog at a time with this callback!
  1656. '**            
  1657. '** Author:    DND
  1658. '** Arguments: Callback args
  1659. '** Returns:   NONE
  1660. '*************************************************************************
  1661.  
  1662. SUB CUSTOM2CB (hDlg&, CtrlId%, Classes$, LInst&)
  1663.  
  1664.    DIM chpt$, tiponly%, index%, dirsym$, notused%, Inst%
  1665.    STATIC PrevPage%
  1666.  
  1667.    Inst% = CINT(LInst&)
  1668.    
  1669.    SELECT CASE Classes$
  1670.  
  1671.       case "__DLGINIT"
  1672.      AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT1)
  1673.      AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  1674.  
  1675.    case "IDC_LCB"
  1676.  
  1677.      SetYieldActive FALSE
  1678.  
  1679.      '** If Inst% is negative that just means that the section changed.
  1680.      '** If Inst% is positive then a check box was toggled.
  1681.  
  1682.      IF Inst% < 0 THEN
  1683.         Inst%    = -Inst%
  1684.         tiponly% = TRUE
  1685.      ELSE
  1686.         tiponly% = FALSE
  1687.      END IF
  1688.  
  1689.      '** Get the chapter from the LCB item
  1690.      index% = Inst% - IDC_LCB1 + 1
  1691.      chpt$  = Lot_LCBGetItem(hDlg&, index%, LCBITEM_CHAPTER)
  1692.      gPageArray(gCurrentPageIndex%).nSel = index%
  1693.  
  1694.      '** Process the LCB info
  1695.      IF chpt$ <> "" THEN
  1696.         IF tiponly% = FALSE THEN
  1697.            Lot_ToggleChapterFilesInCopyList chpt$
  1698.         END IF
  1699.         '** Only redisplay if the page or the selection has changed
  1700.         IF (PrevPage% <> gCurrentPageIndex% OR Inst% <> gPrevInst%) THEN
  1701.            SetCustomInfo FALSE, TRUE, TRUE
  1702.         ELSE
  1703.            SetCustomInfo FALSE, TRUE, FALSE
  1704.         END IF
  1705.      END IF
  1706.      ''* Disable the Change Path.. Button if on a shared directory
  1707.      IF GetSymbolValue(SYM_NETWORK$) = gSTANDARD$ THEN
  1708.         chpt$ = Lot_LCBGetItem(gPageArray(gCurrentPageIndex%).hDlgPage, _
  1709.                gPageArray(gCurrentPageIndex%).nSel,     _
  1710.                LCBITEM_CHAPTER)
  1711.         dirsym$ = Lot_GetChapterValStr(chpt$, F_DESTDIRSYM)
  1712.         IF (dirsym$ = SYM_COMPONENTSDIR$ OR _
  1713.             dirsym$ = SYM_LOTUSUSERDIR$ OR _
  1714.             dirsym$ = SYM_LOTUSFONTSDIR$ OR _
  1715.           dirsym$ = SYM_WINDIR$ OR _
  1716.           dirsym$ = SYM_WINSYSDIR$) THEN
  1717.            notused% = CINT(EnableWindow (GetDlgItem(ghdlg&, IDC_B1), FALSE))
  1718.         ELSE
  1719.           IF IsWindowVisible(GetDlgItem(ghdlg&, IDC_B1)) <> FALSE THEN
  1720.         notused% = CINT(EnableWindow (GetDlgItem(ghdlg&, IDC_B1), TRUE))
  1721.           END IF
  1722.        END IF
  1723.      END IF
  1724.      '** Remember last page and selection for next time
  1725.      PrevPage% = gCurrentPageIndex%
  1726.      gPrevInst% = Inst%
  1727.  
  1728.      SetYieldActive TRUE
  1729.  
  1730.    END SELECT
  1731.  
  1732. END SUB
  1733.  
  1734.  
  1735. '*************************************************************************
  1736. '** SUB CHANGEPRODUCTDIRCB (hDlg&, CtrlId%, Classes$, LInst&)
  1737. '**
  1738. '** Purpose: Callback to handle dialog that lets you change one product
  1739. '**          directory.
  1740. '**            
  1741. '** Author:    DND
  1742. '** Arguments: Callback args
  1743. '** SymbolsIn: SYM_CHANGEDIRSYMBOL$ 
  1744. '** Returns:   NONE
  1745. '*************************************************************************
  1746.  
  1747. SUB CHANGEPRODUCTDIRCB (hDlg&, CtrlId%, Classes$, LInst&)
  1748.  
  1749.    STATIC drvIndex%, dirChanged%
  1750.    DIM    dirSym$, dirToChange$, dirName$, rc$, i%, olddir$, Inst%
  1751.    DIM    notused%
  1752.  
  1753.    Inst% = CINT(LInst&)
  1754.  
  1755.    SELECT CASE Classes$
  1756.  
  1757.    case "__DLGINIT"
  1758.      dirChanged%  = FALSE
  1759.      dirSym$      = GetSymbolValue(SYM_CHANGEDIRSYMBOL$)
  1760.      dirToChange$ = GetSymbolValue(dirSym$)
  1761.      dirName$     = GetSymbolValue(dirSym$ + gNAME$)
  1762.  
  1763.      AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT1)
  1764.      AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  1765.  
  1766.      SetWindowText GetDlgItem(hDlg&, IDC_GROUP1), dirName$
  1767.  
  1768.      Lot_GetDriveFreeSpaceList "IDC_COMBO1"
  1769. '      drvIndex% = SelectDriveCombo ("IDC_COMBO1", dirToChange$)
  1770.  
  1771.      SetListItem "IDC_EDIT", 1, dirToChange$
  1772.      drvIndex% = ValidateEditBox(hDlg& , 1)
  1773.      AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1774.  
  1775.    case "IDC_EDIT"
  1776.      dirChanged% = TRUE
  1777.  
  1778.    case "IDC_BRWSDIR"
  1779.      notused% = ValidateBrowse(hDlg& , Inst%) 
  1780.      dirChanged% = TRUE
  1781.  
  1782.    case "IDC_COMBO1"
  1783.      ComboSelChanged 1, Inst%
  1784.      drvIndex%   = Inst%
  1785.      dirChanged% = TRUE
  1786.  
  1787.    case "IDC_OK"
  1788.      IF dirChanged% = TRUE THEN
  1789.        dirSym$      = GetSymbolValue(SYM_CHANGEDIRSYMBOL$)
  1790.        olddir$      = GetSymbolValue(dirSym$)
  1791.  
  1792.        
  1793.        IF ValidateEditBox(hDlg& , 1) = 0 THEN
  1794.          SetListItem "__LASTSTATUS", 1, "Q"
  1795.          EXIT SUB
  1796.        END IF
  1797.        dirToChange$ = GetPathFromComboEdit(hDlg&,1)
  1798.  
  1799.        IF ValidatePath(dirToChange$) = FALSE THEN
  1800.          SetListItem "__LASTSTATUS", 1, "Q"
  1801.        ELSE
  1802.             dirSym$ = GetSymbolValue(SYM_CHANGEDIRSYMBOL$)
  1803.             SetSymbolValue dirSym$, dirToChange$
  1804.  
  1805.               '** Server is only allowed to change main product dir
  1806.               IF GetSymbolValue(SYM_NETWORK$) <> gSTANDARD$ THEN
  1807.                  dirName$ = |"| + dirSym$ + |",TRUE|
  1808.               ELSE
  1809.                  dirName$ = |"| + dirSym$ + |",FALSE|
  1810.               END IF
  1811.               rc$ = Lot_CallOneProductFunction(Lot_GetCurrentProduct(), _
  1812.               "PathChange", gNEXT$, FALSE, dirName$)
  1813.               If rc$ = gBACK Then
  1814.                  SetListItem "IDC_EDIT", 1, Lot_ExtractDirectory(olddir$)
  1815.                  drvIndex% = SelectDriveCombo ("IDC_COMBO1", olddir$)
  1816.                  SetSymbolValue dirSym$, olddir$
  1817.                  AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1818.                  SetListItem "__LASTSTATUS", 1, "Q"
  1819.                  EXIT SUB
  1820.               End If
  1821.  
  1822.          Lot_RefreshDestination(dirSym$)
  1823.        END IF
  1824.      END IF
  1825.  
  1826.    END SELECT
  1827.  
  1828. END SUB
  1829.  
  1830. 'MARIANA
  1831. '** SUB GETCOMPONENTDIRCB (hDlg&, CtrlId%, Classes$, LInst&)
  1832. '** Purpose: Prompts for Lotusapp dir in install
  1833. '** Author:    MZ
  1834. '** Arguments: Callback args
  1835. '** Returns:   NONE
  1836. '*************************************************************************
  1837. SUB GETCOMPONENTDIRCB (hDlg&, CtrlId%, Classes$, LInst&)
  1838.    STATIC drvIndex%(1 to MAX_NO_DRIVECOMBOS), dirChanged%
  1839.    DIM    dirSym$, dirToChange$, dirName$, winLotApp$, Inst%
  1840.    DIM    drvSel%
  1841.    
  1842.    Inst% = CINT(LInst&)
  1843.    SELECT CASE Classes$
  1844.  
  1845.    case "__DLGINIT"
  1846.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT2)
  1847.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT3)
  1848.       AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  1849.  
  1850.       dirChanged%  = FALSE
  1851.       dirToChange$ = GetSymbolValue(SYM_COMPONENTSDIR$)
  1852.       dirName$     = GetSymbolValue(dirSym$ + gNAME$)
  1853.  
  1854.       Lot_GetDriveFreeSpaceList "IDC_COMBO1"
  1855.       AddListItem SYM_UPDATELIST$, "IDC_COMBO1"
  1856.       'drvIndex% = SelectDriveCombo ("IDC_COMBO1", dirToChange$)
  1857.       SetListItem "IDC_EDIT", 1, dirToChange$
  1858.       drvIndex%(1) = ValidateEditBox(hDlg& , 1)
  1859.       AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  1860.  
  1861.    case "IDC_COMBO1"
  1862.         ComboSelChanged 1,Inst%
  1863.         drvIndex%(1)   = Inst%
  1864.         dirChanged% = TRUE
  1865.    
  1866.    case "IDC_EDIT"
  1867.       dirChanged% = TRUE
  1868.  
  1869.    case "IDC_BRWSDIR"
  1870.       drvSel% = ValidateBrowse(hDlg& , Inst%) 
  1871.       dirChanged% = TRUE
  1872.  
  1873.    case "IDC_OK"
  1874.     IF dirChanged% = TRUE THEN
  1875.       IF ValidateEditBox(hDlg& , 1) = 0 THEN
  1876.         SetListItem "__LASTSTATUS", 1, "Q"
  1877.         EXIT SUB
  1878.       END IF
  1879.       dirToChange$ = GetPathFromComboEdit(hDlg&,1)
  1880.       IF ValidatePath(dirToChange$) = FALSE THEN
  1881.         SetListItem "__LASTSTATUS", 1, "Q"
  1882.       ELSE
  1883.         SetSymbolValue SYM_COMPONENTSDIR$, dirToChange$
  1884.         Lot_RefreshDestination(SYM_COMPONENTSDIR$)
  1885.       END IF
  1886.       'Initialize the symbols for Notes Data and ORACLE Home directories
  1887.       DL_SetNotesDataPath
  1888.       DL_SetOraclePath
  1889.     END IF
  1890.  
  1891.    END SELECT
  1892.  
  1893. END SUB
  1894.  
  1895. '************************************************************************
  1896. '*                   End of Custom Routines                             *
  1897. '************************************************************************
  1898. '*************************************************************************
  1899. '** SUB SIZEOFINSTALLCB (hDlg&, CtrlId%, Classes$, LInst&)
  1900. '**
  1901. '** Purpose:   Handles the SizeOfInstall Dialog Box for Single Install
  1902. '**            Always works with the current product (should be 1).
  1903. '**
  1904. '**            With a little work we might be able to use this callback
  1905. '**            for the main size of install dialog in SmartSuite.
  1906. '**            You would need to pay attention to minimum size and
  1907. '**            current product. Plus, the path asked for would be
  1908. '**            the BASEDIR, not a product path. However, I think the
  1909. '**            logic could be added.
  1910. '**
  1911. '** In Symbols:
  1912. '**     
  1913. '** Author:    DND
  1914. '** Arguments: STANDARD CALLBACK ARGS
  1915. '** Comments:  SYM_SIZEOFINSTALL$ is an in-out param
  1916. '** Returns:
  1917. '**     
  1918. '*************************************************************************
  1919. '** unc template for multiple COMBO-TEXT boxes
  1920. SUB SIZEOFINSTALLCB (hDlg&, CtrlId%, Classes$, LInst&)
  1921.  
  1922.    STATIC drvIndex%(1 to MAX_NO_DRIVECOMBOS), dirChanged%, size$, lDistSize&, dirChanged2%, dirChanged3%
  1923.    DIM    dirSym$, dirToChange$, rc$, i%, nProds%, lcb&, notused%
  1924.    DIM    drvItem$, drvFree&, network$, Inst%, dirSym2$, dirToChange2$
  1925.    DIM    NumDirs%, DriveChangedFlag%, drvSel%
  1926.  
  1927.    DriveChangedFlag% = FALSE              '** MZ
  1928.  
  1929.    Inst% = CINT(LInst&)
  1930.  
  1931.    network$ = GetSymbolValue(SYM_NETWORK)
  1932.  
  1933.    SELECT CASE Classes$
  1934.    
  1935.    CASE "__DLGINIT"
  1936.  
  1937.       '** Init the radio buttons
  1938.       size$ = GetSymbolValue(SYM_SIZEOFINSTALL$)
  1939.       SELECT CASE size$
  1940.  
  1941.       CASE gCOMPLETE$
  1942.      SetListItem "IDC_B", 1, "T"            '** Complete
  1943.  
  1944.       CASE gLAPTOP$
  1945.      SetListItem "IDC_B", 2, "T"            '** Minimum
  1946.  
  1947.       CASE gCUSTOM$
  1948.      SetListItem "IDC_B", 3, "T"            '** Custom
  1949.  
  1950.       END SELECT
  1951.       AddListItem SYM_UPDATELIST$, "IDC_B"
  1952.  
  1953.  
  1954.       '** Fill the product full size
  1955.       lcb& = 0
  1956.       nProds% = Reg_GetNumberOfProducts()
  1957.       FOR i% = 1 to nProds%
  1958.         IF Reg_GetUIInOrOut (i%) <> 0 THEN
  1959.           lcb& = lcb& + Reg_GetProdFullSize(i%)
  1960.         END IF 
  1961.       NEXT
  1962.       SetListItem "IDC_TEXT", 2, LdString(SID_SPACENEEDED) + _
  1963.       STR$((lcb& \ 1048576) + 1) + gStrMB$
  1964.  
  1965.       '** Fill in the product laptop size
  1966.       lcb& = 0
  1967.       FOR i% = 1 to nProds%
  1968.         IF Reg_GetUIInOrOut (i%) <> 0 THEN
  1969.           lcb& = lcb& + Reg_GetProdMinSize(i%)
  1970.         END IF 
  1971.       NEXT
  1972.       SetListItem "IDC_TEXT", 4, LdString(SID_SPACENEEDED) + _
  1973.       STR$((lcb& \ 1048576) + 1) + gStrMB$
  1974.  
  1975.     '** Set up the normal font controls
  1976.     AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT1)
  1977.     AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT2)
  1978.     AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT3)
  1979.     AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT4)
  1980.     AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT5)
  1981.     AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT10)
  1982.  
  1983.     AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  1984.     AddListItem  SYM_UPDATELIST$, "IDC_TEXT2"
  1985.     AddListItem  SYM_UPDATELIST$, "IDC_TEXT4"
  1986.  
  1987.     '** Init the path area. We only change first path in list.
  1988.     '** So far, the SmartSuite dlg does not have any paths.
  1989.  
  1990.     dirChanged%  = FALSE
  1991.     dirChanged2%  = FALSE
  1992.     IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  1993.        dirChanged%  = TRUE
  1994.        dirSym$      = Reg_GetDirSymbolList(1)
  1995.        If GetListLength(dirSym$) >= 1 Then
  1996.     dirSym$      = GetListItem(dirSym$, 1)
  1997.     dirToChange$ = GetSymbolValue(dirSym$)
  1998.     Lot_GetDriveFreeSpaceList "IDC_COMBO1"
  1999.     SetListItem "IDC_EDIT", 1, dirToChange$
  2000.     drvIndex%(1) = ValidateEditBox(hDlg& , 1)
  2001.     AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  2002.        End If
  2003.  
  2004.        dirSym2$      = Reg_GetDirSymbolList(1)
  2005.        NumDirs% = Reg_GetProdSupportForExtraProdDirs(1)
  2006.  
  2007.        If GetListLength(dirSym2$) > 1 AND _
  2008.     NumDirs% = 1 Then
  2009.      dirChanged2%  = TRUE
  2010.      dirSym2$      = GetListItem(dirSym2$, 2)
  2011.      dirToChange2$ = GetSymbolValue(dirSym2$)
  2012.      Lot_GetDriveFreeSpaceList "IDC_COMBO2"
  2013.      SetListItem "IDC_EDIT", 2, dirToChange2$
  2014.      drvIndex%(2) = ValidateEditBox(hDlg& , 2)
  2015.      AddListItem SYM_UPDATELIST$, "IDC_EDIT2"
  2016.        End If
  2017.  
  2018.      '** If server, then fill the COMPONENTS as well.
  2019.      '** TV: COMPONENTS is always IDC_EDIT/COMBO3 
  2020.      IF GetSymbolValue(SYM_NETWORK$) = gSERVER$ THEN
  2021.   dirToChange$ = GetSymbolValue(SYM_COMPONENTSDIR$)
  2022.   Lot_GetDriveFreeSpaceList "IDC_COMBO3"
  2023.   SetListItem "IDC_EDIT", 3, dirToChange$
  2024.   drvIndex%(3) = ValidateEditBox(hDlg& , 3)
  2025.   AddListItem SYM_UPDATELIST$, "IDC_EDIT3"
  2026.      END IF
  2027.  
  2028.  
  2029.      '** Take care of whether the controls are enabled or not
  2030.      IF Reg_GetProdSupportForFullInstall(1) = FALSE THEN
  2031.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_B1),    FALSE))
  2032.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT1), FALSE))
  2033.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT2), FALSE))
  2034.      END IF
  2035.      IF Reg_GetProdSupportForMinInstall(1)  = FALSE THEN
  2036.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_B2),    FALSE))
  2037.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT3), FALSE))
  2038.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT4), FALSE))
  2039.      END IF
  2040.      IF Reg_GetProdSupportForCustInstall(1) = FALSE THEN
  2041.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_B3),    FALSE))
  2042.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT5), FALSE))
  2043.      END IF
  2044.        '**** IDC_TEXT3and IDC_TEXT5 should be visible for a product with only full install
  2045.      IF (Reg_GetProdSupportForFullInstall(1) <> FALSE) AND _
  2046.   (Reg_GetProdSupportForMinInstall(1)  = FALSE)  AND _
  2047.   (Reg_GetProdSupportForCustInstall(1) = FALSE)  THEN
  2048.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT3), TRUE))
  2049.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT4), TRUE))
  2050.   notused% = CINT(EnableWindow(GetDlgItem(hDlg&, IDC_TEXT5), TRUE))
  2051.      END IF
  2052. '** Don't allow user path changes for a language install
  2053.       If GetSymbolValue(SYM_INSTALLKIND$) = gLANGUAGEINSTALL$ _   
  2054.       Then 
  2055.   notused% = CINT(ShowWindow (GetDlgItem(hDlg&, IDC_BRWSDIR1), SW_HIDE))
  2056.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_BRWSDIR1), FALSE))
  2057.   notused% = CINT(ShowWindow (GetDlgItem(hDlg&, IDC_BRWSDIR2), SW_HIDE))
  2058.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_BRWSDIR2), FALSE))
  2059.   notused% = CINT(ShowWindow (GetDlgItem(hDlg&, IDC_BRWSDIR3), SW_HIDE))
  2060.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_BRWSDIR3), FALSE))
  2061.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_COMBO1), FALSE))
  2062.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_EDIT1), FALSE))
  2063.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_COMBO2), FALSE))
  2064.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_EDIT2), FALSE))
  2065.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_COMBO3), FALSE))
  2066.   notused% = CINT(EnableWindow (GetDlgItem(hdlg&, IDC_EDIT3), FALSE))
  2067.       End If
  2068.     END IF
  2069.  
  2070.    case "IDC_COMBO1"
  2071.     ComboSelChanged 1,Inst%
  2072.     DirChanged% = TRUE
  2073.  
  2074.    case "IDC_COMBO2"
  2075.     ComboSelChanged 2,Inst%
  2076.     DirChanged2% = TRUE
  2077.  
  2078.    case "IDC_COMBO1"
  2079.     ComboSelChanged 3,Inst%
  2080.     DirChanged3% = TRUE
  2081.  
  2082.    case "IDC_B"
  2083.       SELECT CASE Inst%
  2084.  
  2085.       CASE 1
  2086.      size$ = gCOMPLETE$
  2087.  
  2088.       CASE 2
  2089.      size$ = gLAPTOP$
  2090.  
  2091.       CASE 3
  2092.      size$ = gCUSTOM$
  2093.  
  2094.       END SELECT
  2095.  
  2096.  
  2097.    case "IDC_EDIT"
  2098.       SELECT CASE Inst%
  2099.  
  2100.       CASE 1
  2101.    dirChanged% = TRUE
  2102.       CASE 2
  2103.    dirChanged2% = TRUE
  2104.       END SELECT
  2105.  
  2106.    case "IDC_BRWSDIR"
  2107.    drvSel% = ValidateBrowse(hDlg& , Inst%) 
  2108.       SELECT CASE Inst%
  2109.  
  2110.       CASE 1
  2111.    dirChanged% = TRUE
  2112.       CASE 2
  2113.    dirChanged2% = TRUE
  2114.       END SELECT
  2115.    
  2116.    case "IDC_OK"
  2117.      SetSymbolValue SYM_SIZEOFINSTALL$, size$
  2118.  
  2119.      '** Handle the main application path
  2120.      IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ AND _
  2121.      dirChanged% = TRUE                               THEN
  2122.        IF ValidateEditBox(hDlg& , 1) = 0 THEN
  2123.          SetListItem "__LASTSTATUS", 1, "Q"
  2124.          EXIT SUB
  2125.        END IF
  2126.           dirToChange$ = GetPathFromComboEdit(hDlg&,1)
  2127.  
  2128.        IF ValidatePath(dirToChange$) = FALSE THEN
  2129.          SetListItem "__LASTSTATUS", 1, "Q"
  2130.          EXIT SUB
  2131.        ELSE
  2132.          dirSym$ = Reg_GetDirSymbolList(1)
  2133.          If GetListLength(dirSym$) >= 1 Then
  2134.            dirSym$ = GetListItem(dirSym$, 1)
  2135.            SetSymbolValue dirSym$, dirToChange$
  2136.            rc$ = Lot_CallOneProductFunction(1, "PathChange",gNEXT$, _
  2137.            FALSE, |"| + dirSym$ + |",TRUE|)
  2138.            If rc$ = gBACK Then
  2139.              SetListItem "__LASTSTATUS", 1, "Q"
  2140.              EXIT SUB
  2141.            End If
  2142.            Lot_RefreshDestination(dirSym$)
  2143.          End If
  2144.        END IF
  2145.      END IF
  2146.  
  2147.      '** Handle the secondary application path
  2148.      IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ AND _
  2149.      dirChanged2% = TRUE THEN
  2150.        IF drvSel% = ValidateEditBox(hDlg& , 2) = 0 THEN
  2151.          SetListItem "__LASTSTATUS", 1, "Q"
  2152.          EXIT SUB
  2153.        END IF
  2154.        dirToChange2$ = GetPathFromComboedit(hDlg&,2)
  2155.        IF ValidatePath(dirToChange2$) = FALSE THEN
  2156.          SetListItem "__LASTSTATUS", 1, "Q"
  2157.          EXIT SUB
  2158.        ELSE
  2159.          dirSym2$ = Reg_GetDirSymbolList(1)
  2160.          If GetListLength(dirSym2$) > 1 Then
  2161.            dirSym2$ = GetListItem(dirSym2$, 2)
  2162.            SetSymbolValue dirSym2$, dirToChange2$
  2163.            rc$ = Lot_CallOneProductFunction(1, "PathChange",gNEXT$, _
  2164.            FALSE, |"| + dirSym2$ + |",TRUE|)
  2165.            If rc$ = gBACK Then
  2166.              SetListItem "__LASTSTATUS", 1, "Q"
  2167.              EXIT SUB
  2168.            End If
  2169.            Lot_RefreshDestination(dirSym2$)
  2170.          End If
  2171.        END IF
  2172.      END IF
  2173.  
  2174.      '** If this is server, then check the COMPONENTS dir
  2175.      IF GetSymbolValue(SYM_NETWORK$) = gSERVER$  AND _
  2176.      Reg_GetProdSupportForShare32(1) = 1 AND _
  2177.      GetListLength("IDC_EDIT") > 2 THEN
  2178.        IF ValidateEditBox(hDlg& , 3) = 0 THEN
  2179.          SetListItem "__LASTSTATUS", 1, "Q"
  2180.          EXIT SUB
  2181.        END IF
  2182.        dirToChange2$ = GetPathFromComboedit(hDlg,3)
  2183.        IF ValidatePath(dirToChange2$) = FALSE THEN
  2184.          SetListItem "__LASTSTATUS", 1, "Q"
  2185.          EXIT SUB
  2186.        ELSE
  2187.          SetSymbolValue SYM_COMPONENTSDIR$, dirToChange2$
  2188.          Lot_RefreshDestination(SYM_COMPONENTSDIR$)
  2189.        END IF
  2190.      END IF
  2191.      ResetWinWinsysSymbols
  2192.    END SELECT
  2193.  
  2194. DONESIZEOFINSTALLCB:
  2195.  
  2196. END SUB
  2197.  
  2198.  
  2199. '*************************************************************************
  2200. '** SUB DISTSIZEINSTALLCB (hDlg&, CtrlId%, Classes$, LInst&)
  2201. '**
  2202. '** Purpose:   Handles the DB_CHOOSEPATHDIST Dialog Box for Single
  2203. '**            and SmartSuite Install
  2204. '**            Always works with the current product (should be 1).
  2205. '**
  2206. '**            With a little work we might be able to use this callback
  2207. '**            for the main size of install dialog in SmartSuite.
  2208. '**            You would need to pay attention to minimum size and
  2209. '**            current product. Plus, the path asked for would be
  2210. '**            the BASEDIR, not a product path. However, I think the
  2211. '**            logic could be added.
  2212. '**
  2213. '** In Symbols:
  2214. '**     
  2215. '** Author:    DND, CMOY
  2216. '** Arguments: STANDARD CALLBACK ARGS
  2217. '** Comments:  SYM_SIZEOFINSTALL$ is an in-out param
  2218. '** Returns:
  2219. '**     
  2220. '*************************************************************************
  2221.  
  2222. SUB DISTSIZEINSTALLCB (hDlg&, CtrlId%, Classes$, LInst&)
  2223.  
  2224.    STATIC drvIndex%, dirChanged%, size$, lDistSize&
  2225.    DIM    dirSym$, dirToChange$, rc$, i%, nProds%, lcb&, notused%
  2226.    DIM    drvItem$, drvFree&, network$, Inst%
  2227.    DIM    drvSel%
  2228.  
  2229.    Inst% = CINT(LInst&)
  2230.  
  2231.    network$ = GetSymbolValue(SYM_NETWORK)
  2232.    SELECT CASE Classes$
  2233.    
  2234.    CASE "__DLGINIT"
  2235.       size$ = GetSymbolValue(SYM_SIZEOFINSTALL$)
  2236.       '** Fill the product full size
  2237.       lcb& = 0
  2238.       nProds% = Reg_GetNumberOfProducts()
  2239.       FOR i% = 1 to nProds%
  2240.       lcb& = lcb& + Reg_GetProdFullSize(i%)
  2241.       NEXT
  2242.       SetListItem "IDC_TEXT", 2, LdString(SID_SPACENEEDED) + _
  2243.          STR$((lcb& \ 1048576) + 1) + gStrMB$
  2244.  
  2245.  
  2246.       '** Set up the normal font controls
  2247.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT1)
  2248.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT2)
  2249.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT7)
  2250.  
  2251.       AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  2252.       AddListItem  SYM_UPDATELIST$, "IDC_TEXT2"
  2253.  
  2254.       '** Init the path area. We only change first path in list.
  2255.       '** So far, the SmartSuite dlg does not have any paths.
  2256. '      dirChanged%  = FALSE
  2257.       dirChanged%  = TRUE
  2258.       dirSym$      = Reg_GetDirSymbolList(1)
  2259.       If GetListLength(dirSym$) >= 1 Then
  2260.      dirSym$      = GetListItem(dirSym$, 1)
  2261.      dirToChange$ = GetSymbolValue(dirSym$)
  2262.      Lot_GetDriveFreeSpaceList "IDC_COMBO1"
  2263.      SetListItem "IDC_EDIT", 1, dirToChange$
  2264.      drvIndex% = ValidateEditBox(hDlg& , 1)  
  2265.      drvItem$   = GetListItem("IDC_COMBO1",drvIndex%)
  2266.      drvFree&   = CLNG(MID$(drvItem$,3,Instr(drvItem$,";")-4))
  2267.      AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  2268.       End If
  2269.       lDistSize& = Lot_GetInfSectionSize(gDISTRIBUTIONFILES$) \ 1024
  2270.       SetListItem "IDC_TEXT", 1, STR$(lDistSize&) + gStrK$
  2271.       SetListItem "IDC_TEXT", 2, STR$(drvFree& - lDistSize&) + gStrK$
  2272.       AddListItem SYM_UPDATELIST$, "IDC_TEXT1"
  2273.       AddListItem SYM_UPDATELIST$, "IDC_TEXT2"
  2274.  
  2275.    case "IDC_COMBO1" 
  2276.       ComboSelChanged 1, Inst%
  2277.       dirChanged%   = TRUE
  2278.       '** For distribution, update the text.
  2279.       drvItem$   = GetListItem("IDC_COMBO1",Inst%)
  2280.       drvFree&   = CLNG(MID$(drvItem$,3,Instr(drvItem$,";")-4))
  2281. 'changed for unc      drvFree&   = CLNG(MID$(drvItem$,3,LEN(drvItem$)-5))
  2282.       '** already computed in __DLGINIT
  2283.       '** lDistSize& = Lot_GetInfSectionSize(gDISTRIBUTIONFILES$) \ 1024
  2284.       SetListItem "IDC_TEXT", 1, STR$(lDistSize&) + gStrK$
  2285.       SetListItem "IDC_TEXT", 2, STR$(drvFree& - lDistSize&) + gStrK$
  2286.       AddListItem SYM_UPDATELIST$, "IDC_TEXT1"
  2287.       AddListItem SYM_UPDATELIST$, "IDC_TEXT2"
  2288.  
  2289.  
  2290.    case "IDC_EDIT"
  2291.       dirChanged% = TRUE
  2292.  
  2293.    case "IDC_BRWSDIR"
  2294.       drvSel% = ValidateBrowse(hDlg& , Inst%)
  2295.       drvItem$   = GetListItem("IDC_COMBO1",drvSel%)
  2296.       drvFree&   = CLNG(MID$(drvItem$,3,Instr(drvItem$,";")-4))
  2297.       SetListItem "IDC_TEXT", 2, STR$(drvFree& - lDistSize&) + gStrK$
  2298.       AddListItem SYM_UPDATELIST$, "IDC_TEXT2" 
  2299.       dirChanged% = TRUE
  2300.  
  2301.    case "IDC_OK"
  2302.       
  2303.       SetSymbolValue SYM_SIZEOFINSTALL$, size$
  2304.  
  2305.       IF dirChanged% = TRUE THEN
  2306.      '** Handle the main application path
  2307.     
  2308.         IF ValidateEditBox(hDlg& , 1) = 0 THEN
  2309.           SetListItem "__LASTSTATUS", 1, "Q"
  2310.           EXIT SUB
  2311.         END IF
  2312.         dirToChange = GetPathFromComboEdit(hDlg&,1)
  2313.         IF ValidatePath(dirToChange$) = FALSE THEN
  2314.           SetListItem "__LASTSTATUS", 1, "Q"
  2315.           EXIT SUB
  2316.         ELSE
  2317.           dirSym$ = Reg_GetDirSymbolList(1)
  2318.           If GetListLength(dirSym$) >= 1 Then
  2319.             dirSym$ = GetListItem(dirSym$, 1)
  2320.             SetSymbolValue dirSym$, dirToChange$
  2321.             rc$ = Lot_CallOneProductFunction(1, "PathChange",gNEXT$, _
  2322.                   FALSE, |"| + dirSym$ + |",TRUE|)
  2323.  
  2324.            '** Not sure what to do with the return yet
  2325.  
  2326.            Lot_RefreshDestination(dirSym$)
  2327.          End If
  2328.  
  2329.          ResetWinWinsysSymbols
  2330.          '** TV:     
  2331.          IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  2332.            SetSymbolValue SYM_BASEDIR$, dirToChange$
  2333.          END IF
  2334.        END IF
  2335.      END IF
  2336.  
  2337.    END SELECT
  2338.  
  2339. END SUB
  2340.  
  2341. '*************************************************************************
  2342. '** SUB DISKCOPYMETHODCB (hDlg&, CtrlId%, Classes$, LInst&)
  2343. '**
  2344. '** Purpose:  Allows user to choose Server or Distribution
  2345. '** IN SYMBOLS : NETWORK=SERVER |  DISTRIBUTION    
  2346. '** OUT SYMBOLS: NETWORK=SERVER | DISTRIBUTION    
  2347. '**     
  2348. '** Author:
  2349. '** Arguments:
  2350. '**     
  2351. '**     
  2352. '** Returns:
  2353. '**     
  2354. '*************************************************************************
  2355.  
  2356. SUB DISKCOPYMETHODCB (hDlg&, CtrlId%, Classes$, LInst&)
  2357.    DIM network$, Inst%
  2358.  
  2359.    Inst% = CINT(LInst&)
  2360.  
  2361.    SELECT CASE Classes$
  2362.    
  2363.    CASE "__DLGINIT"
  2364.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT1)
  2365.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT2)
  2366.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT3)
  2367.       AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  2368.  
  2369.       network$ = GetSymbolValue(SYM_NETWORK$)
  2370.       IF network$ = gSERVER$ THEN
  2371.      SetListItem "IDC_B", 1, "T"
  2372.      AddListItem SYM_UPDATELIST$, "IDC_B1"
  2373.       ELSEIF network$ = gDISTRIBUTION$ THEN
  2374.      SetListItem "IDC_B", 2, "T"
  2375.      AddListItem SYM_UPDATELIST$, "IDC_B2"
  2376.       END IF
  2377.  
  2378.    CASE "IDC_B"
  2379.       SELECT CASE Inst%
  2380.       
  2381.       CASE 1
  2382.      SetSymbolValue SYM_NETWORK$, gSERVER$
  2383.  
  2384.       CASE 2
  2385.      SetSymbolValue SYM_NETWORK$, gDISTRIBUTION$
  2386.  
  2387.       END SELECT
  2388.  
  2389.    END SELECT
  2390.  
  2391. END SUB
  2392.  
  2393. '*************************************************************************
  2394. '** PUBLIC FUNCTION SRV_SUCCESSCB (hDlg&, CtrlId%, Classes$, LInst&)
  2395. '** Purpose: This is a call back for Success dlg box for Server Install.
  2396. '**          It executes the licenser.exe, if start licenser button
  2397. '**          is selected.
  2398. '**          This works with DB_SRV_SUCCESS AND DB_SRV_SUCCESS_LIC
  2399. '** Author:  MZ
  2400. '** Arguments:
  2401. '*************************************************************************
  2402.  
  2403. PUBLIC SUB SRV_SUCCESSCB (hDlg&, CtrlId%, Classes$, LInst&)
  2404.    DIM path$, exist%, ExecError%, Inst%
  2405.  
  2406.    Inst% = CINT(LInst&)
  2407.  
  2408.    SELECT CASE Classes$
  2409.  
  2410.    CASE "__DLGINIT"
  2411.       '** Set up the normal font controls
  2412.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT2)
  2413.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT3)
  2414.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT4)
  2415.       AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  2416.  
  2417.    CASE "IDC_B"
  2418.       IF Inst% = 1 THEN
  2419.      path$  = GetSymbolValue(SYM_LICDIR$)
  2420.      path$  = path$ + "licenser.exe"
  2421.      exist% = DoesFileExist(path$, femExists)
  2422.  
  2423.      '** DND: Should I be displaying where we looked for licenser?
  2424.      IF exist% = FALSE THEN
  2425.     ErrorMsgNoDlgExit SID_NO_LICENSEREXE, ""
  2426.      ELSE
  2427.     '** DND: Should I display what we could not launch?
  2428.     ExecError% = WinExec (path$, SW_SHOWNORMAL)
  2429.     IF ExecError% < 32 THEN
  2430.        ErrorMsgNoDlgExit SID_ERR_EXECLIC, ""
  2431.     END IF
  2432.      END IF
  2433.       END IF
  2434.  
  2435.    END SELECT
  2436.  
  2437. END SUB
  2438.  
  2439. '*************************************************************************
  2440. '** PUBLIC SUB LAUNCHNAGCB (hDlg&, CtrlId%, Classes$, LInst&)
  2441. '** Purpose: Sole purpose is to launch Notepad on the NAG
  2442. '**          
  2443. '**          
  2444. '** Author: Marcel Meth
  2445. '** Arguments:
  2446. '**     
  2447. '**     
  2448. '** Returns:
  2449. '**     
  2450. '*************************************************************************
  2451.  
  2452. PUBLIC SUB LAUNCHNAGCB (hDlg&, CtrlId%, Classes$, LInst&)
  2453.    DIM cmd$, ExecError%, Inst%
  2454.  
  2455.    Inst% = CINT(LInst&)
  2456.  
  2457.    SELECT CASE Classes$
  2458.  
  2459.    CASE "__DLGINIT"
  2460.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT1)
  2461.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT2)
  2462.       AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  2463.  
  2464.    CASE "IDC_B"
  2465.  
  2466.       '** DND: Will these filenames always be the same?
  2467.  
  2468.       cmd$ = GetSymbolValue(SYM_STF_CWDDIR$) + LdString(SID_READNETWRI)
  2469.         If NOT DoesFileExist(cmd$, femExists) Then
  2470.             cmd$ =  MakePath(GetSymbolValue(SYM_STF_SRCDIR$),LdString(SID_READNETWRI))
  2471.         End If
  2472.          If NOT DoesFileExist(cmd$, femExists) Then
  2473.              cmd$ =  LdString(SID_READNETWRI)
  2474.          End If
  2475.         cmd$ = LdString(SID_WRITEEXE) & " " & cmd$
  2476.       ExecError% = WinExec (cmd$, SW_SHOWNORMAL )
  2477.  
  2478.       '** DND: This does not seem like enough info for error
  2479.       IF ExecError% < 32 THEN
  2480.             ErrorMsg SID_ERR_EXECWRITE, ""
  2481.       END IF
  2482.  
  2483.    END SELECT   
  2484.  
  2485. END SUB
  2486.  
  2487. '*************************************************************************
  2488. '*************************** Local Functions *****************************
  2489. '*************************************************************************
  2490.  
  2491. '*************************************************************************
  2492. '** SUB SetCustomInfo(fOnTab%,fNewSpace%,fUpdateAll%)
  2493. '**
  2494. '** Purpose: Fill with info for custom dialogs. Call this every time
  2495. '**          the LCB changes selection or state.
  2496. '**            
  2497. '** Author:    DND
  2498. '** Arguments: fOnTab%     TRUE if tab has focus
  2499. '**            fNewSpace%  TRUE if we should get new space requirements
  2500. '**            fUpdateAll% TRUE if we should update all fields on the dlg
  2501. '** Returns:   NONE
  2502. '*************************************************************************
  2503.  
  2504. SUB SetCustomInfo(fOnTab%,fNewSpace%,fUpdateAll%)
  2505.  
  2506. '   STATIC lckSpace&, drvSave$
  2507.    DIM    chpt$, dest$, dirName$, dirSym$, drv$, tips$, tmpDrv$, szCost$
  2508.    DIM    lckCost&, lckAvail&
  2509.    DIM    bitmap%, n%, notused%, lnotused&, hwndtemp&
  2510.  
  2511.    '** Get the tip and chapter from the current LCB item
  2512.    IF fOnTab% = FALSE THEN
  2513.       chpt$ = Lot_LCBGetItem(gPageArray(gCurrentPageIndex%).hDlgPage, _
  2514.          gPageArray(gCurrentPageIndex%).nSel,     _
  2515.          LCBITEM_CHAPTER)
  2516.    ELSE
  2517.       chpt$ = gPageArray(gCurrentPageIndex%).szChapter$
  2518.    END IF
  2519.    IF chpt$ = "" THEN EXIT SUB
  2520.  
  2521.    tips$ = Lot_GetChapterValStr(chpt$, F_TIPS)   
  2522.  
  2523.    '** If instructed then build the custom cost list
  2524.    IF GetListLength(SYM_CUSTOMCOST$) = 0 OR fNewSpace% <> FALSE THEN
  2525.       lnotused& = LcbGetChapterCost("", "", SYM_CUSTOMCOST$, "")
  2526.    END IF
  2527.  
  2528.    '** Get the destination directory and dirName
  2529.    dirSym$ = Lot_GetChapterValStr(chpt$, F_DESTDIRSYM)
  2530.  
  2531.    dest$    = GetSymbolValue(dirSym$)
  2532.    dirName$ = GetSymbolValue(dirSym$ + gNAME$)
  2533.    drv$     = MID$(dest$, 1, 1)
  2534. '** UNC stuff
  2535.    IF drv$ = "\" THEN
  2536.        Lot_SplitUNCPath dest$, drv$, tmpDrv$
  2537.        szCost$ = GetListItem(drv$,2)
  2538.        IF szCost$ = "" THEN
  2539.      lckCost& = 0
  2540.        ELSE
  2541.      lckCost& = CLNG(szCost$) \ 1024
  2542.        END IF
  2543.    ELSE
  2544.        n%       = ASC(LCASE$(drv$)) - ASC("a") + 1
  2545.        lckCost& = CLNG(GetListItem(SYM_CUSTOMCOST$, n%)) \ 1024
  2546.    END IF
  2547.    '** Set the space available
  2548. '** I commented this out because the space value would be inacurate if
  2549. '** free space on a drive changed between visits to the LCB.
  2550. '** I left the code here in case calling GetFreeSpaceForDrive 
  2551. '** proved to be too much of a performance hit
  2552. '**   IF drv$ = drvSave$ THEN
  2553. '**      lckAvail& = lckSpace&
  2554. '**   ELSE
  2555. '**      IF MID$(drv$,1,1) = "\" THEN
  2556. '**        szCost$ = GetListItem(drv$,4) 'get the drivefree space for the
  2557. '**        IF szCost$ <> "" THEN         'unc volume
  2558. '**          lckAvail& = CLNG(szCost$)
  2559. '**        ELSE
  2560. '**          lckAvail& = 0
  2561. '**        END IF
  2562. '**      ELSE
  2563.     lckAvail& = GetFreeSpaceForDrive(drv$)
  2564. '**        lckSpace& = lckAvail&
  2565. '**        drvSave$  = drv$
  2566. '**      END IF
  2567. '**   END IF
  2568.    IF fUpdateAll% <> FALSE THEN
  2569.       '** write out the tip text
  2570.     SetWindowText GetDlgItem(gPageArray(gCurrentPageIndex%).hDlgPage&, IDC_TEXT1), tips$
  2571.  
  2572.       '** Set the bitmap (if any)
  2573.       bitmap% = Lot_GetChapterValInt(chpt$, F_BITMAP)
  2574.         lnotused& = SendMessage(GetDlgItem(gPageArray(gCurrentPageIndex%).hDlgPage&, IDC_BMP1), WM_COMMAND, _
  2575.                             UM_SETBITMAP, bitmap%)
  2576.  
  2577.       '** Set all the values in the dialogs
  2578.       '** SetWindowText GetDlgItem(gPageArray(gCurrentPageIndex%).hDlgPage&, IDC_TEXT1), tips$
  2579.       SetWindowText GetDlgItem(ghdlg&, IDC_TEXT4), dest$
  2580.       SetWindowText GetDlgItem(ghdlg&, IDC_TEXT8), dest$
  2581.       SetWindowText GetDlgItem(ghdlg&, IDC_TEXT5), dirName$
  2582.    END IF
  2583.  
  2584.    SetWindowText GetDlgItem(ghdlg&, IDC_TEXT2), Lot_MakeSizeString(lckCost&)
  2585.    SetWindowText GetDlgItem(ghdlg&, IDC_TEXT3), Lot_MakeSizeString(lckAvail&)
  2586.  
  2587.       ''* Disable the Change Path.. Button if on a shared directory
  2588.    IF GetSymbolValue(SYM_NETWORK$) = gSTANDARD$ AND _
  2589.       IsWindowVisible(GetDlgItem(ghdlg&, IDC_B1)) <> FALSE THEN
  2590.        notused% = CINT(EnableWindow (GetDlgItem(ghdlg&, IDC_B1), TRUE))
  2591.       ''* Disable the Change Path.. Button if on a tab, not an item
  2592.  
  2593.       IF fOnTab% = TRUE THEN _
  2594.      notused% = CINT(EnableWindow (GetDlgItem(ghdlg&, IDC_B1), FALSE))
  2595.    END IF
  2596.  
  2597. END SUB
  2598.  
  2599.  
  2600. PUBLIC SUB ResetWinWinsysSymbols()
  2601. '** Purpose:    Reset WINDIR, WINSYSDIR to the value of SymVal$ for server
  2602. '**             or set it back if change from server -> other
  2603. '** Author:     MZ, JMD
  2604. '** Arguments:  
  2605. '*************************************************************************
  2606.  
  2607.    DIM   network$, SymVal$
  2608.  
  2609.    network$ = GetSymbolValue(SYM_NETWORK$)
  2610.    IF network$ = gSERVER$ THEN
  2611.  
  2612.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  2613.      SymVal$ = Reg_GetDirSymbolList(1)
  2614.      If GetListLength(SymVal$) >= 1 Then
  2615.     SymVal$ = GetListItem(SymVal$, 1)
  2616.     SymVal$ = GetSymbolValue(SymVal$)
  2617.      Else
  2618.     '** RESOURCE! ***
  2619.     ErrorMsg SID_ERR_SRV_MUST_HAVE_MAINDIR, "" 
  2620.     ERROR STFQUIT
  2621.      End If
  2622.       ELSE
  2623.      SymVal$ = GetSymbolValue(SYM_BASEDIR$)
  2624.       END IF
  2625.  
  2626.       SetSymbolValue SYM_WINDIR$,    SymVal$ + "win\"
  2627.       SetSymbolValue SYM_WINSYSDIR$, SymVal$ + "winsys\"
  2628.       SetSymbolValue SYM_LOTUSFONTSDIR$, SymVal$ + "win\fonts\"
  2629.  
  2630.       Lot_RefreshDestination(SYM_WINDIR$)
  2631.       Lot_RefreshDestination(SYM_WINSYSDIR$)
  2632.       Lot_RefreshDestination(SYM_LOTUSFONTSDIR$)
  2633.  
  2634.    ELSE
  2635.       Lot_InitializeWinWinsysSym
  2636.    END IF
  2637.  
  2638. END SUB
  2639.  
  2640. '** DND: This function should be moved to Toolkit. We might also
  2641. '**      want to think about calling this function whenever a destination
  2642. '**      directory is entered.
  2643.  
  2644. FUNCTION DoesFileExistInDir (dirlist$) AS INTEGER
  2645. '** Purpose:   Takes a list of directories and puts up an error message
  2646. '**            listing all the directories which have files in them. 
  2647. '** In Symbols: 
  2648. '** OUT symbols: 
  2649. '**             
  2650. '**     
  2651. '** Author:  JYOTI KEDIA
  2652. '** Arguments: list of directories
  2653. '**     
  2654. '**     
  2655. '** Returns: TRUE
  2656. '**     
  2657. '*************************************************************************
  2658.    DIM errstr$, n%, i%, dirname$, RC%, temp$, sz$
  2659.  
  2660.    DoesFileExistInDir = TRUE
  2661.    errstr$ = ""
  2662.    n% = GetListLength(dirlist$)
  2663.    for i% = 1 to n%
  2664.       dirname$ = GetListItem(dirlist$,i%) 
  2665.       rc% = DoesDirExist(dirname$)
  2666.       If DoesDirExist(dirname$)Then                
  2667.      temp$ = Lot_Dir(dirname$+"\*.*") 
  2668.      if temp$ <> "" Then 
  2669.     errstr$ = errstr$ + CHR$(10) + CHR$(10) + "     " + dirname$
  2670.      end if
  2671.       end if
  2672.    Next
  2673.        
  2674.    if errstr$ <> "" Then
  2675.       sz$ = LdString(SID_DIR_NOT_EMPTY) + errstr$
  2676.       RC% = DoMsgBox(sz$,LdString(SID_TKT_STD_TITLE),MB_OKCANCEL + MB_ICONEXCLAMATION) 
  2677.       if RC% <> 1 Then
  2678.      SetListItem "__LASTSTATUS",1,"Q"
  2679.      EXIT FUNCTION
  2680.       end if 
  2681.    end if
  2682.  
  2683. END FUNCTION
  2684.  
  2685. '** SUB SRVNODEOPTIONSCB (hDlg&, CtrlId%, Classes$, LInst&)
  2686. '** Purpose: Drives DBSUIT_SRV_NODEOPTIONS dialog
  2687. '** Author:    MZ
  2688. '** Arguments: Callback args
  2689. '** Returns:   NONE
  2690. '** Restriction: this call back works only in custom install
  2691. '*************************************************************************
  2692. SUB SRVNODEOPTIONSCB (hDlg&, CtrlId%, Classes$, LInst&)
  2693.   DIM chpt$, firstchpt$, ProdName$, child$, dirsym$
  2694.   DIM toggle%,Selection%,sel%,Written%
  2695.   DIM NumOfProds%, OptNum%, OptName$, tiponly%,ProdNum%, Selected$, prodno$
  2696.   DIM RC$, i%, j%,k%, notused%, Item$, flag$, SaveInst%, index%,OptKeyWord$
  2697.   DIM Inst%,groupOn%,gIndex%,memberCount%
  2698.  
  2699.   Inst% = CINT(LInst&)
  2700.  
  2701.   SELECT CASE Classes$
  2702.  
  2703.     case "__DLGINIT"
  2704.  
  2705.       ' If no products are registered exit
  2706.       NumOfProds% = Reg_GetNumberOfProducts()
  2707.       IF NumOfProds%=0 THEN
  2708.         EXIT SUB
  2709.       END IF
  2710.  
  2711.       ' Make the right hand text not bold
  2712.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT1)
  2713.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT3)
  2714.       AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  2715.  
  2716.       ' Turn of the display during this operation
  2717.       Lot_LCBSetRedraw hDlg&, 0
  2718.       Lot_LCBResetContent hDlg&
  2719.  
  2720.       ' Loop through products
  2721.       gIndex% = 1   '***    group box index
  2722.       FOR i% = 1 TO NumOfProds%
  2723.         Reg_ReSetAllNodeOptsSelToDefaults i%
  2724.         OptNum%=Reg_GetNumofNodeOptions(i%)
  2725.         IF OptNum% <> 0 THEN
  2726.           chpt$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(i%) + gTOP$)
  2727.           IF firstchpt$ = "" THEN     
  2728.             firstchpt$ = chpt$
  2729.           END IF
  2730.           Lot_SetSpaceDirTip hDlg&,chpt$,1 - IDC_LCB1 + 1,i%,FALSE
  2731.           ProdName$ = Lot_GetChapterValStr(chpt$, F_NAME) 
  2732.           Written% = 0
  2733.           groupOn% = FALSE
  2734.                     memberCount% = 0
  2735.           ' Loop through the options
  2736.           FOR j% = 1 TO OptNum%
  2737.             ' Indent the option name under the product
  2738.             OptKeyWord$ = Reg_GetNodeOptionStr(i%,j%)
  2739.             chpt$ = Lot_GetChapterFromKeyword(OptKeyWord$)
  2740.             IF INT(Lot_GetChapterValInt(chpt$,F_INOROUT)) = 1 THEN
  2741.               IF Written% = 0 THEN
  2742.                 ' Write: check box selected
  2743.                 '        Name of the product;
  2744.                 '        no size;
  2745.                 '        number of node options for this product;
  2746.                 '        product number;
  2747.                 '        G for group
  2748.                 Item$="0"+ProdName$+";;"+STR(OptNum%)+";"+STR(i%)+";G"
  2749.                 IF Lot_LCBAddItem(hDlg&, Item$) = 0 THEN
  2750.                   ErrorMsg SID_ERR_POPULATELCB, ""
  2751.                   ERROR STFQUIT
  2752.                 END IF
  2753.                 Written% = 1
  2754.                 memberCount = memberCount + 1
  2755.               END IF
  2756.  
  2757.               OptName$ = "    "+Lot_GetChapterValStr(chpt$, F_NAME)
  2758.               ' Write: check box selected
  2759.               '        Indented Name of the feature;
  2760.               '        size of the feature in Kb;
  2761.               '        chapter number;
  2762.               '        product number;
  2763.               '        M for member;
  2764.               '        OptKeyWord$;
  2765.               '        OptSequence
  2766.               Selected$ = Reg_IsNodeOptionSelected(i%,j%)
  2767.               IF Selected$ = STR(1) THEN
  2768.                                 Selected$ = "1"
  2769.                 groupOn% = TRUE
  2770.                             ELSE 
  2771.                                 Selected$ = "0"
  2772.                             END IF
  2773.                 Item$=Selected$+OptName$+";"+ _
  2774.                 Lot_MakeSizeString(Lot_GetInfChapterSize(chpt$)\1024) _
  2775.                 +";"+chpt$+";"+STR(i%)+";M;"+OptKeyWord$+";"+STR(j%)
  2776.               IF Lot_LCBAddItem(hDlg&, Item$) = 0 THEN
  2777.                 ErrorMsg SID_ERR_POPULATELCB, ""
  2778.                 ERROR STFQUIT
  2779.               END IF
  2780.               memberCount = memberCount + 1
  2781.             ELSE
  2782.               Reg_ReSetNodeOptionSelected i%,j%,0
  2783.             END IF
  2784.           NEXT
  2785.           IF groupOn <> FALSE THEN
  2786.             notused% = Lot_LCBReplaceItem(hDlg&, gIndex%, LCBITEM_SELECTED,"1")
  2787.           END IF
  2788.           'The next group index is the previous plus number of member boxes
  2789.           gIndex% = gIndex% + memberCount%
  2790.         END IF
  2791.       NEXT
  2792.  
  2793.       ' Turn on the display
  2794.       Lot_LCBSetRedraw hDlg&, 1
  2795.  
  2796.       ' Select the first item in the listbox
  2797.       Lot_LCBSetSel hDlg&, 1
  2798.       prodno$  = Lot_LCBGetItem(hDlg&,1,5)   '***5-productnumber
  2799.       Lot_SetSpaceDirTip hDlg&,firstchpt$,1,CINT(prodno$),FALSE
  2800.  
  2801.     case "IDC_LCB"
  2802.  
  2803.       SetYieldActive FALSE    ' turn off yielding while handling lcb
  2804.  
  2805.       '** If Inst% is negative that just means that the section changed.
  2806.       '** If Inst% is positive then a check box was toggled.
  2807.       SaveInst% = Inst%
  2808.       IF Inst% < 0 THEN
  2809.         Inst%    = -Inst%
  2810.         tiponly% = TRUE
  2811.         toggle% = FALSE
  2812.       ELSE
  2813.         tiponly% = FALSE
  2814.         toggle% = TRUE
  2815.       END IF
  2816.  
  2817.       ' Find what check box was hit
  2818.       index% = Inst% - IDC_LCB1 + 1
  2819.       ' Get the chapter no or number of options from the check box info
  2820.       chpt$  = Lot_LCBGetItem(hDlg&, index%, LCBITEM_CHAPTER)
  2821.       ' Get the product No from the check box info
  2822.       ProdNum% = CINT(Lot_LCBGetItem(hDlg&, index%, 5))
  2823.       ' Read Group/Member flag from the list of check boxes
  2824.       flag$ = Lot_LCBGetItem(hDlg&, index%, 6)
  2825.       ' Read if the check box is checked or not
  2826.       Selection% = CINT(Lot_LCBGetItem(hDlg&, index%, LCBITEM_SELECTED))
  2827.       ' Read the Keyword from the check box info
  2828.       OptKeyWord$ = Lot_LCBGetItem(hDlg&, index%, 7)
  2829.  
  2830.       '** Process the LCB info
  2831.  
  2832.       '** If you toggle a group
  2833.       '** set all members to the same
  2834.       '** index is the group box
  2835.       IF flag$ = "G" AND toggle% = TRUE THEN
  2836.         FOR i% = index%+1 TO index%+CINT(chpt$)
  2837.           IF i% > Lot_LCBGetCount(hDlg&) OR _
  2838.           Lot_LCBGetItem(hDlg&, i%, 6) = "G" THEN EXIT FOR
  2839.           IF Selection% = 0 THEN
  2840.             notused% = Lot_LCBReplaceItem(hDlg&, i%, LCBITEM_SELECTED,"0")
  2841.           ELSE
  2842.             notused% = Lot_LCBReplaceItem(hDlg&, i%, LCBITEM_SELECTED,"1")
  2843.           END IF
  2844.           Reg_SetNodeOptionSelected ProdNum%, CINT(Lot_LCBGetItem(hDlg&,_
  2845.           i%, 8)), Selection%
  2846.         NEXT
  2847.       END IF
  2848.  
  2849.       '** If you select a group
  2850.       IF flag$ = "G" AND toggle% = FALSE THEN
  2851.         prodno$  = Lot_LCBGetItem(hDlg&, index%,5)   '***5-productnumber
  2852.         chpt$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(_
  2853.                                 CINT(prodno$)) + gTOP$)
  2854.         Lot_SetSpaceDirTip hDlg&,chpt$,index%,ProdNum%,TRUE
  2855.       END IF
  2856.  
  2857.       '** If you toggle a member
  2858.       IF flag$ = "M" AND toggle% = TRUE THEN
  2859.         sel% = CINT(Lot_LCBGetItem(hDlg&, index%, LCBITEM_SELECTED))
  2860.  
  2861.                 'set node option
  2862.         Reg_SetNodeOptionSelected ProdNum%, CINT(Lot_LCBGetItem(hDlg&,_
  2863.                 index%, 8)), sel%
  2864.  
  2865.         Lot_SetSpaceDirTip hDlg&,chpt$,index%,ProdNum%,FALSE
  2866.  
  2867.         'go up the lcb until we find the group
  2868.         gIndex%=index%
  2869.         WHILE flag <> "G" AND gIndex% > 0
  2870.           gIndex%=gIndex%-1
  2871.           flag$ = Lot_LCBGetItem(hDlg&, gIndex%, 6)
  2872.         WEND
  2873.  
  2874.                 'now scroll down and look at all the members
  2875.         groupOn%=FALSE
  2876.         chpt$  = Lot_LCBGetItem(hDlg&, gIndex%, LCBITEM_CHAPTER)
  2877.                 '** Scroll down the member boxes to see if any are on
  2878.                 FOR i% = gIndex%+1 TO gIndex%+CINT(chpt$)
  2879.                     IF i% > Lot_LCBGetCount(hDlg&) OR _
  2880.                     Lot_LCBGetItem(hDlg&, i%, 6) = "G" THEN EXIT FOR
  2881.                     sel% = CINT(Lot_LCBGetItem(hDlg&, i%, LCBITEM_SELECTED))
  2882.           IF sel% <> FALSE THEN 
  2883.                         groupOn% = TRUE
  2884.                         EXIT FOR
  2885.                     END IF
  2886.         NEXT
  2887.  
  2888.         IF groupOn% = FALSE THEN
  2889.           notused% = Lot_LCBReplaceItem(hDlg&, gIndex%, LCBITEM_SELECTED,"0")
  2890.                 ELSE
  2891.           notused% = Lot_LCBReplaceItem(hDlg&, gIndex%, LCBITEM_SELECTED,"1")
  2892.         END IF
  2893.       END IF
  2894.  
  2895.       '** If you select a member
  2896.       IF flag$ = "M" AND toggle% = FALSE THEN
  2897.         Lot_SetSpaceDirTip hDlg&,chpt$,index%,ProdNum%,TRUE
  2898.       END IF
  2899.  
  2900.       SetYieldActive TRUE     ' turn yielding back on
  2901.  
  2902.    END SELECT
  2903.  
  2904. END SUB
  2905.  
  2906.  
  2907.  
  2908.  
  2909. '*************************************************************************
  2910. SUB NODENODEOPTIONSCB (hDlg&, CtrlId%, Classes$, LInst&)
  2911. '** Purpose: Drives DBSUIT_NODE_NODEOPTIONS dialog
  2912. '** Author:    MZ
  2913. '** Arguments: Callback args
  2914. '** Returns:   NONE
  2915. '*************************************************************************
  2916.   DIM chpt$, firstchpt$, ProdName$, dirsym$,toggle%,Selection%,sel%,Written%
  2917.   DIM OptName$, tiponly%,ProdNum%, Selected$, prodno$
  2918.   DIM AllProdNum%,AllOptNum%
  2919.   DIM RC$, i%, j%, notused%, Item$, flag$, SaveInst%, index%,OptKeyWord$
  2920.   DIM Inst%, drvSel%, dirToChange$
  2921.   DIM avail&, gIndex%,groupOn%,tipChpt$,thisChptIn%,memberCount%
  2922.   STATIC dirChanged%
  2923.  
  2924.   Inst% = CINT(LInst&)
  2925.  
  2926.   SELECT CASE Classes$
  2927.  
  2928.     case "__DLGINIT"
  2929.       dirChanged%  = FALSE
  2930.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT1)
  2931.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT3)
  2932.       AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  2933.  
  2934.       ' Turn of the display during this operation
  2935.       Lot_LCBSetRedraw hDlg&, 0
  2936.       Lot_LCBResetContent hDlg&
  2937.  
  2938.  
  2939.     IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  2940.       Lot_GetDriveFreeSpaceList "IDC_COMBO1"
  2941.       dirSym$ = Reg_GetDirSymbolList(1)
  2942.       dirSym$ = GetListItem(dirSym$,1) 
  2943.       dirToChange$ = GetSymbolValue(dirSym$)
  2944.     ELSE
  2945.       dirToChange$ = GetSymbolValue(SYM_BASEDIR$)
  2946.     END IF
  2947.     SetSymbolValue SYM_CHANGEDIRSYMBOL$, dirSym$
  2948.     SetListItem "IDC_EDIT", 1, dirToChange$
  2949.     notused% = ValidateEditBox(hDlg& , 1)
  2950.  
  2951.     AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  2952.  
  2953.     'Loop through the products and find the avail node options
  2954.     AllProdNum% = 0
  2955.     AllProdNum% = Reg_GetNumberOfProducts()
  2956.     IF AllProdNum% <> 0 THEN
  2957.       gIndex% = 1
  2958.       'Loop through the products
  2959.       Written% = 0
  2960.       FOR prodNum%=1 TO AllProdNum%
  2961.         AllOptNum% = 0
  2962.         memberCount% = 0
  2963.         Reg_ReSetAllNodeOptsSelToDefaults prodNum%
  2964.         AllOptNum% = Reg_GetNumofNodeOptions(prodNum%)
  2965.         chpt$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(prodNum%)_
  2966.           + gTOP$)
  2967.         IF AllOptNum% <> 0 AND (INT(Lot_GetChapterValInt(chpt$,F_INOROUT)) = 1) THEN
  2968.           IF firstchpt$ = "" THEN 
  2969.             firstchpt$ = chpt$
  2970.           END IF
  2971.           ProdName$ = Lot_GetChapterValStr(chpt$, F_NAME) 
  2972.           Written% = 0
  2973.           'if none of the members are on we will deselect group box
  2974.           groupOn%=FALSE
  2975.           ' Loop through the options
  2976.           FOR j% = 1 TO AllOptNum%
  2977.             ' Indent the option name under the product
  2978.             OptKeyWord$ = Reg_GetNodeOptionStr(prodNum%,j%)
  2979.             chpt$ = Lot_GetChapterFromKeyword(OptKeyWord$)
  2980.             thisChptIn%=0
  2981.             avail& = Lot_IsTheNodeOptionsAvailToNode(prodNum%, OptKeyWord$)
  2982.             IF Lot_IsTheFeatureInstalled(OptKeyWord$) <> FALSE AND _
  2983.             avail <> FALSE THEN
  2984.               IF Written% = 0 THEN
  2985.                 ' Write: check box selected
  2986.                 '        Name of the product;
  2987.                 '        no size;
  2988.                 '        number of node options for this product;
  2989.                 '        product number;
  2990.                 '        G for group
  2991.                 Item$="0"+ProdName$+";;"+STR(AllOptNum%)+";"+STR(prodNum%)+";G"
  2992.                 IF Lot_LCBAddItem(hDlg&, Item$) = 0 THEN
  2993.                   ErrorMsg SID_ERR_POPULATELCB, ""
  2994.                   ERROR STFQUIT
  2995.                 END IF
  2996.                 Written% = 1
  2997.                 memberCount% = memberCount% + 1
  2998.               END IF
  2999.               OptName$ = "    "+Lot_GetChapterValStr(chpt$, F_NAME)
  3000.               ' Write: check box selected
  3001.               '        Indented Name of the feature;
  3002.               '        size of the feature in Kb;
  3003.               '        chapter number;
  3004.               '        product number;
  3005.               '        M for member;
  3006.               '        OptKeyWord$;
  3007.               '        OptSequence
  3008.               Selected$ = Reg_IsNodeOptionSelected(prodNum%,j%)
  3009.               IF Selected$ = STR(1) THEN
  3010.                 groupOn%=TRUE
  3011.                 thisChptIn%=1
  3012.                 Item$="1"+OptName$+";"+ _
  3013.                 Lot_MakeSizeString(Lot_GetInfChapterSize(chpt$)\1024) _
  3014.                 +";"+chpt$+";"+STR(prodNum%)+";M;"+OptKeyWord$+";"+STR(j%)
  3015.               ELSE
  3016.                 Item$="0"+OptName$+";"+ _
  3017.                 Lot_MakeSizeString(Lot_GetInfChapterSize(chpt$)\1024) _
  3018.                 +";"+chpt$+";"+STR(prodNum%)+";M;"+OptKeyWord$+";"+STR(j%)
  3019.               END IF
  3020.               memberCount% = memberCount% + 1
  3021.               IF Lot_LCBAddItem(hDlg&, Item$) = 0 THEN
  3022.                 ErrorMsg SID_ERR_POPULATELCB, ""
  3023.                 ERROR STFQUIT
  3024.               END IF
  3025.             ELSE
  3026.                 Reg_ReSetNodeOptionSelected prodNum%,j%,0
  3027.             END IF
  3028.             notused% = Lot_SetChapterFilesInCopyListInOrOut(chpt$, thisChptIn%)
  3029.           NEXT
  3030.           IF groupOn% <> FALSE THEN
  3031.             notused% = Lot_LCBReplaceItem(hDlg&, gIndex%, LCBITEM_SELECTED,"1")
  3032.           END IF
  3033.           'The next group index is the previous plus number of member boxes
  3034.           gIndex% = gIndex% + memberCount%
  3035.         END IF
  3036.       NEXT
  3037.       ' Turn on the display
  3038.       Lot_LCBSetRedraw hDlg&, 1
  3039.  
  3040.       ' Select the first item in the listbox
  3041.       IF gIndex > 1 THEN 
  3042.         Lot_LCBSetSel hDlg&, 1
  3043.         prodno$  = Lot_LCBGetItem(hDlg&,1,5)   '***5-productnumber
  3044.         Lot_SetSpaceDirTip hDlg&,firstchpt$,1,CINT(prodno$),FALSE
  3045.       END IF
  3046.     END IF
  3047.  
  3048.     case "IDC_LCB"
  3049.  
  3050.       SetYieldActive FALSE    ' turn off yielding while handling lcb
  3051.  
  3052.       '** If Inst% is negative that just means that the section changed.
  3053.       '** If Inst% is positive then a check box was toggled.
  3054.       SaveInst% = Inst%
  3055.       IF Inst% < 0 THEN
  3056.         Inst%    = -Inst%
  3057.         tiponly% = TRUE
  3058.         toggle% = FALSE
  3059.       ELSE
  3060.         tiponly% = FALSE
  3061.         toggle% = TRUE
  3062.       END IF
  3063.       ' Find what check box was hit
  3064.       index% = Inst% - IDC_LCB1 + 1
  3065.       ' Get the chapter no or number of options from the check box info
  3066.       chpt$  = Lot_LCBGetItem(hDlg&, index%, LCBITEM_CHAPTER)
  3067.       ' Get the product No from the check box info
  3068.       ProdNum% = CINT(Lot_LCBGetItem(hDlg&, index%, 5))
  3069.       ' Read Group/Member flag from the list of check boxes
  3070.       flag$ = Lot_LCBGetItem(hDlg&, index%, 6)
  3071.       ' Read if the check box is checked or not
  3072.       Selection% = CINT(Lot_LCBGetItem(hDlg&, index%, LCBITEM_SELECTED))
  3073.       ' Read the Keyword from the check box info
  3074.       OptKeyWord$ = Lot_LCBGetItem(hDlg&, index%, 7)
  3075.  
  3076.       '**save the chapter number to set the tip
  3077.       IF flag$ = "G" THEN
  3078.         prodno$  = Lot_LCBGetItem(hDlg&, index%,5)   '***5-productnumber
  3079.         tipChpt$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(CINT(prodno$)) + gTOP$)
  3080.       ELSE
  3081.         tipChpt$=chpt$
  3082.       END IF
  3083.       '** Process the LCB info
  3084.  
  3085.  
  3086.       '** If you toggle a group
  3087.       IF flag$ = "G" AND toggle% = TRUE THEN
  3088.  
  3089.         FOR i% = index%+1 TO index%+CINT(chpt$)
  3090.           IF i% > Lot_LCBGetCount(hDlg&) OR _
  3091.           Lot_LCBGetItem(hDlg&, i%, 6) = "G" THEN EXIT FOR
  3092.           thisChptIn% = 0
  3093.           'here prodno$ is used to toggle member box on/off
  3094.           prodno$ = "0"
  3095.           sel% = CINT(Lot_LCBGetItem(hDlg&, i%, LCBITEM_SELECTED))
  3096.           'selection is the group box state
  3097.           'sel is the member box state 
  3098.           'if they are different make them the same
  3099.           IF sel% <> selection% THEN
  3100.             chpt$  = Lot_LCBGetItem(hDlg&, i%, LCBITEM_CHAPTER)
  3101.             IF selection% <> 0 THEN 
  3102.               thisChptIn% = 1 
  3103.               prodno$ = "1"
  3104.             END IF
  3105.             notused% = Lot_LCBReplaceItem(hDlg&, i%,_
  3106.                         LCBITEM_SELECTED,prodno$)
  3107.             notused% = Lot_SetChapterFilesInCopyListInOrOut(chpt$, _
  3108.                           thisChptIn%)
  3109.             Reg_SetNodeOptionSelected ProdNum%,_
  3110.             CINT(Lot_LCBGetItem(hDlg&, i%, 8)), thisChptIn%
  3111.           END IF
  3112.         NEXT
  3113.       END IF
  3114.  
  3115.       '** If you toggle a member
  3116.       IF flag$ = "M" AND toggle% = TRUE THEN
  3117.         'go up the lcb until we find the group
  3118.         gIndex%=index%
  3119.         WHILE flag <> "G" AND gIndex% > 0
  3120.           gIndex%=gIndex%-1
  3121.           flag$ = Lot_LCBGetItem(hDlg&, gIndex%, 6)
  3122.         WEND
  3123.         sel% = CINT(Lot_LCBGetItem(hDlg&, index%, LCBITEM_SELECTED))
  3124.         IF sel% = 0 THEN
  3125.           Reg_SetNodeOptionSelected ProdNum%, _
  3126.           CINT(Lot_LCBGetItem(hDlg&, index%, 8)), 0
  3127.           notused% = Lot_SetChapterFilesInCopyListInOrOut(chpt$, 0)
  3128.           groupOn%=FALSE
  3129.           'if all selections are off turn off group
  3130.           chpt$  = Lot_LCBGetItem(hDlg&, gIndex%, LCBITEM_CHAPTER)
  3131.  
  3132.  
  3133.           FOR i% = gIndex%+1 TO gIndex%+CINT(chpt$)
  3134.             IF i% > Lot_LCBGetCount(hDlg&) OR _
  3135.             Lot_LCBGetItem(hDlg&, i%, 6) = "G" THEN EXIT FOR
  3136.             sel% = CINT(Lot_LCBGetItem(hDlg&, i%, LCBITEM_SELECTED))
  3137.             IF sel% <> FALSE THEN 
  3138.               groupOn% = TRUE
  3139.               EXIT FOR
  3140.             END IF
  3141.           NEXT
  3142.  
  3143.           'if none of the options are on uncheck the group box
  3144.           IF groupOn% = FALSE THEN
  3145.             notused% = Lot_LCBReplaceItem(hDlg&, gIndex%, LCBITEM_SELECTED,"0")
  3146.           END IF
  3147.         ELSE
  3148.           Reg_SetNodeOptionSelected ProdNum%, CINT(Lot_LCBGetItem(hDlg&, index%, 8)), 1
  3149.           notused% = Lot_SetChapterFilesInCopyListInOrOut(chpt$, 1)
  3150.           notused% = Lot_LCBReplaceItem(hDlg&, gIndex%, LCBITEM_SELECTED,"1")
  3151.         END IF
  3152.       END IF
  3153.       '** If you select a member
  3154.       'if we did not toggle then tiponly is true
  3155.       IF toggle = FALSE THEN
  3156.         Lot_SetSpaceDirTip hDlg&,tipChpt$,index%,ProdNum%,TRUE
  3157.       ELSE
  3158.         Lot_SetSpaceDirTip hDlg&,tipChpt$,index%,ProdNum%,FALSE
  3159.       END IF
  3160.  
  3161.       SetYieldActive TRUE     ' turn yielding back on
  3162.  
  3163.     case "IDC_EDIT"
  3164.       dirChanged% = TRUE
  3165.  
  3166.     case "IDC_BRWSDIR"
  3167.       drvSel% = ValidateBrowse(hDlg& , Inst%) 
  3168.       dirChanged% = TRUE
  3169.  
  3170.     case "IDC_COMBO1"
  3171.       ComboSelChanged 1, Inst% 
  3172.       dirChanged% = TRUE
  3173.  
  3174.     case "IDC_OK"
  3175.       IF dirChanged% = TRUE THEN
  3176.         drvSel% = ValidateEditBox(hDlg& , 1)
  3177.         IF drvSel% = 0 THEN
  3178.           SetListItem "__LASTSTATUS", 1, "Q"
  3179.         EXIT SUB
  3180.       END IF
  3181.       dirToChange$ = GetPathFromComboEdit(hDlg&, 1)
  3182.       IF ValidatePath(dirToChange$) = FALSE THEN
  3183.         SetListItem "__LASTSTATUS", 1, "Q"
  3184.       ELSE
  3185.         dirSym$ = GetSymbolValue(SYM_CHANGEDIRSYMBOL$)
  3186.         SetSymbolValue dirSym$, dirToChange$
  3187.         rc$ = Lot_CallOneProductFunction(Lot_GetCurrentProduct(), _
  3188.         "PathChange", gNEXT$,    _
  3189.         FALSE, |"| + dirSym$ + |",FALSE|)
  3190.         If rc$ = gBACK Then
  3191.           SetListItem "__LASTSTATUS", 1, "Q"
  3192.           EXIT SUB
  3193.         End If
  3194.         Lot_RefreshDestination(dirSym$)
  3195.       END IF
  3196.     END IF
  3197.   END SELECT
  3198.  
  3199. END SUB
  3200.  
  3201. '*************************************************************************
  3202. SUB Lot_SetSpaceDirTip(hDlg&,chpt$,index%,ProdNum%,tiponly%)
  3203. '** Purpose: Fill with info for Server NodeOptions dialogs. Call this every
  3204. '**          time the LCB changes selection or state in  SRVNODEOPTIONSCB
  3205. '** Author:    MZ
  3206. '** Arguments: hDlg&
  3207. '**            Chapter$
  3208. '**            index%
  3209. '**            tiponly%
  3210. '*************************************************************************
  3211.    STATIC lckSpace&, drvSave$
  3212.    DIM    dest$, dirName$, dirSym$, drv$, tips$, uncVol$, dirPath$
  3213.    DIM    lckCost&, lckAvail&
  3214.    DIM    bitmap%, n%, notused%
  3215.  
  3216.    '** Get the tip and chapter from the current LCB item
  3217.    tips$ = Lot_GetChapterValStr(chpt$, F_TIPS)   
  3218.  
  3219.    '** If instructed then build the custom cost list
  3220.    IF GetListLength(SYM_CUSTOMCOST$) = 0 OR tiponly <> FALSE THEN
  3221.       notused% = LcbGetChapterCost("", "", SYM_CUSTOMCOST$, "")
  3222.    END IF
  3223.  
  3224.    '** Get the destination directory and dirName
  3225.    dirSym$ = Lot_GetChapterValStr(chpt$, F_DESTDIRSYM)
  3226.    IF GetSymbolValue(SYM_NETWORK$) <> gSTANDARD$ THEN
  3227.       dirSym$ = Reg_GetDirSymbolList(ProdNum%)
  3228.       dirSym$ = GetListItem(dirSym$, 1)
  3229.    END IF
  3230.  
  3231.    dest$    = GetSymbolValue(dirSym$)
  3232.    dirName$ = GetSymbolValue(dirSym$ + gNAME$)
  3233.    drv$     = MID$(dest$, 1, 1)
  3234.    Lot_SplitUNCPath dest$, uncVol$, dirPath$
  3235.    IF uncVol$ = "" THEN
  3236.      n%       = ASC(drv$) - ASC("a") + 1
  3237.      lckCost& = CLNG(GetListItem(SYM_CUSTOMCOST$, n%)) \ 1024
  3238.    ELSE
  3239.      lckCost& = CLNG(GetListItem(uncVol$, UNC_COST)) \ 1024
  3240.  
  3241.    END IF
  3242.    '** Set the space available
  3243.    IF drv$ = drvSave$ THEN
  3244.       lckAvail& = lckSpace&
  3245.    ELSE
  3246.       lckAvail& = GetFreeSpaceForDrive(dest$)
  3247.       lckSpace& = lckAvail&
  3248.       drvSave$  = drv$
  3249.    END IF
  3250.  
  3251.    '** Set the bitmap (if any)
  3252.    bitmap% = Lot_GetChapterValInt(chpt$, F_BITMAP)
  3253.    IF bitmap% <> 0 THEN
  3254.       SetListItem "IDC_BMP", 1, STR$(bitmap%)
  3255.       AddListItem SYM_UPDATELIST$, "IDC_BMP1"
  3256.    END IF
  3257.  
  3258.    '** Set all the values in the dialogs
  3259.    SetWindowText GetDlgItem(hDlg&, IDC_TEXT1), tips$
  3260.    SetWindowText GetDlgItem(hDlg&, IDC_TEXT5), Lot_MakeSizeString(lckCost&)
  3261.    SetWindowText GetDlgItem(hDlg&, IDC_TEXT7), Lot_MakeSizeString(lckAvail&)
  3262.    SetWindowText GetDlgItem(hDlg&, IDC_TEXT9), dest$
  3263.    'SetWindowText GetDlgItem(hDlg&, IDC_TEXT8), dirName$
  3264.  
  3265. END SUB
  3266.  
  3267. '*************************************************************************
  3268. SUB AUTOEXECCB (hDlg&, CtrlId%, Classes$, LInst&)
  3269. '** Purpose: 
  3270. '**          
  3271. '** Author:    Christopher Moy
  3272. '** Arguments: hDlg&
  3273. '**            CtrlId%
  3274. '**            Classes$
  3275. '**            LInst&
  3276. '*************************************************************************
  3277.  
  3278.    DIM modflag%, notused1$, Inst%
  3279.  
  3280.    Inst% = CINT(LInst&)
  3281.    
  3282.  
  3283.    SELECT CASE Classes$
  3284.  
  3285.    CASE "__DLGINIT"
  3286.      AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT1)
  3287.      AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT2)
  3288.      AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT3)
  3289.      AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT4)
  3290.      AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT5)
  3291.      AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  3292.  
  3293.    CASE "IDC_OK"                    '** Yes button
  3294.      modflag% = 0
  3295.      IF GetSymbolValue(SYM_NEEDNOTES$) <> gFALSE$ THEN
  3296.     modflag% = 1            '** autoexec needs notes
  3297.      END IF
  3298.      IF GetSymbolValue(SYM_NEEDSHARE$) <> gFALSE$ THEN
  3299.     modflag% = modflag% + 2 '** autoexec needs share
  3300.      END IF
  3301.      IF modflag% <> FALSE THEN
  3302.     notused1$=ModifyAutoexec(modflag%, 1, "AUTOEXEC.LTS")
  3303.      END IF
  3304.      SetSymbolValue SYM_AUTOEXEC_CHOICE$, gAUTO$
  3305.  
  3306.    CASE "IDC_MENU"                  '** Make Copy button **
  3307.      modflag% = 0               '** test flag situation
  3308.      IF GetSymbolValue(SYM_NEEDNOTES$) <> gFALSE$ THEN
  3309.     modflag% = 1            '** autoexec needs notes
  3310.      END IF
  3311.      IF GetSymbolValue(SYM_NEEDSHARE$) <> gFALSE$ THEN
  3312.     modflag% = modflag% + 2 '** autoexec needs share
  3313.      END IF
  3314.      IF modflag% <> FALSE THEN
  3315.     notused1$=ModifyAutoexec(modflag%, 0, "AUTOEXEC.LTS")
  3316.      END IF
  3317.      SetSymbolValue SYM_AUTOEXEC_CHOICE$, gAUTOCOPY$
  3318.  
  3319.    CASE "IDC_CONTINUE"                '** No button
  3320.      SetSymbolValue SYM_AUTOEXEC_CHOICE$, gMAN$
  3321.  
  3322.    END SELECT
  3323.  
  3324. END SUB
  3325.  
  3326. '*************************************************************************
  3327. SUB INSTALLCOMPLETECB (hDlg&, CtrlId%, Classes$, LInst&)
  3328. '** Purpose: 
  3329. '**          
  3330. '** Author:    Christopher Moy
  3331. '** Arguments: hDlg&
  3332. '**            CtrlId%
  3333. '**            Classes$
  3334. '**            LInst&
  3335. '*************************************************************************
  3336.    DIM notused1$, hwnd%, lr%, Inst%
  3337.  
  3338.    Inst% = CINT(LInst&)
  3339.    
  3340.    SELECT CASE Classes$
  3341.  
  3342.    CASE "__DLGINIT"
  3343.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT1)
  3344.       AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT2)
  3345.       AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  3346.  
  3347. %rem
  3348.    CASE "IDC_CONTINUE"                     '** Restart button
  3349.  
  3350.       notused1$ = Lot_CallProductFunctions("PostSuccessReg", gNext, FALSE, gALLPRODUCTS,"")
  3351.       hwnd%=FindWindow("LInstallWClass",LdString(SID_INST_WINDOW_TITLE))
  3352. ' Japanese build
  3353. '     hwnd%=FindWindow("LInstallWClass","âìü[â^âX âCâôâXâgü[âïâvâìâOâëâÇé╓éµéñé▒é╗")
  3354.       lr%=SendMessage(hwnd%, WM_COMMAND, UM_REBOOTFLAG, 0)
  3355. %endrem
  3356.      
  3357.    CASE "IDC_OK"                    '** Done button
  3358.  
  3359.    END SELECT
  3360.  
  3361. END SUB
  3362.  
  3363. '*************************************************************************
  3364.  
  3365. SUB PARENTDIRCB (hDlg&, CtrlId%, Classes$, LInst&)
  3366. '** Purpose: Drives DB_PARENTDIR dialog
  3367. '** Author:    MZ,TV
  3368. '** Arguments: Callback args
  3369. '** Returns:   NONE
  3370. '*************************************************************************
  3371.    STATIC drvIndex%(1 to MAX_NO_DRIVECOMBOS)
  3372. '   STATIC dirChanged%
  3373.    DIM    dirSym$, dirToChange$, dirName$, rc$, i%, Chapter$, Inst%
  3374.    DIM    AllProdNum%,prodNum%,AllOptNum%,OptName$,OptNum%,notused%
  3375.    DIM    drvSel%
  3376.  
  3377.    Inst% = CINT(LInst&)
  3378.  
  3379.    SELECT CASE Classes$
  3380.  
  3381.    case "__DLGINIT"
  3382.       'For server, want to update always, since we fiddle with the drive list
  3383.       AddListItem  SYM_NORMALFONT$, STR$(IDC_TEXT1)
  3384.       AddListItem  SYM_UPDATELIST$, SYM_NORMALFONT$
  3385.       Lot_GetDriveFreeSpaceList "IDC_COMBO1"
  3386.       dirToChange$ = GetSymbolValue(SYM_BASEDIR$)
  3387.       SetListItem "IDC_EDIT", 1, dirToChange$
  3388.       drvIndex%(1) = ValidateEditBox(hDlg& , 1)
  3389.       AddListItem SYM_UPDATELIST$, "IDC_EDIT1"
  3390.  
  3391.     case "IDC_COMBO1"
  3392.        ComboSelChanged 1, Inst%
  3393.  
  3394. '   case "IDC_EDIT"
  3395. '      dirChanged% = TRUE
  3396.  
  3397.    case "IDC_BRWSDIR"
  3398.      drvSel% = ValidateBrowse(hDlg& , Inst%) 
  3399. '        dirChanged% = TRUE
  3400.  
  3401.    case "IDC_OK"
  3402.     drvSel% = ValidateEditBox(hDlg& , 1)
  3403.     IF drvSel% = 0 THEN
  3404.         SetListItem "__LASTSTATUS", 1, "Q"
  3405.         EXIT SUB
  3406.     ELSE 
  3407.       drvIndex%(1) = drvSel%
  3408.     END IF
  3409.     dirToChange$ = GetPathFromComboEdit(hDlg&, 1)
  3410.     IF ValidatePath(dirToChange$) = FALSE THEN
  3411.       SetListItem "__LASTSTATUS", 1, "Q"
  3412.       EXIT SUB
  3413.     ELSE
  3414.       SetSymbolValue SYM_BASEDIR$, dirToChange$
  3415.       'IF Reg_GetProdSupportForShare32(1) = 1 THEN
  3416.         ' SetTheComponentsDir
  3417.       'END IF      
  3418.       Lot_RefreshDestination(SYM_BASEDIR$)
  3419.     END IF
  3420.    END SELECT
  3421.  
  3422. END SUB
  3423.  
  3424. '*************************************************************************
  3425.  
  3426. PUBLIC FUNCTION Lot_SharedWindowsDlg (Id%) AS STRING
  3427. '** Purpose: Drives DB_PARENTDIR dialog
  3428. '** Author:    JMD
  3429. '** Arguments: ID of dialog, either:
  3430. '**                    DB_SHAREDWINDOWS    (Install to shared windows dir?)
  3431. '**                    DB_NOSHAREDWINDOWS(Can't install to shared windows dir?)
  3432. '** Returns:   Return value of PopupModalDlg
  3433. '*************************************************************************
  3434.  
  3435.    AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT3)
  3436.    AddListItem SYM_NORMALFONT$, STR$(IDC_TEXT4)
  3437.    AddListItem SYM_UPDATELIST$, SYM_NORMALFONT$
  3438.     
  3439.    SetListItem "IDC_TEXT", 1, GetSymbolValue(SYM_WINDIR$)
  3440.    SetListItem "IDC_TEXT", 2, GetSymbolValue(SYM_WINSYSDIR$)
  3441.  
  3442.    Lot_SharedWindowsDlg = PopupModalDlg ( Id%, CLng(Id%) )
  3443.  
  3444. END FUNCTION
  3445. '*************************************************************************
  3446.  
  3447.